//
//
// выгружалась дата в отдельный стандартный реквизит "ДатаВключенияТовара"
//
// Выгрузка производится в дополнительный пользовательский реквизит "Дата включения номенклатура"
//
Процедура ПроизводимПроверкуНоменклатурыНаОстаток() Экспорт
СвойствоДопРегистра = ПолучаемСвойствоДопРегистра();
ДопРеквизитДатаВключения = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(СвойствоДопРегистра);
Запрос1 = Новый Запрос;
Запрос1.УстановитьПараметр("ПометкаУдаления", Истина );
Запрос1.УстановитьПараметр("ЭтоГруппа", Истина);
Запрос1.Текст = "ВЫБРАТЬ
| Номенклатура.Ссылка,
| Номенклатура.Артикул,
| Номенклатура.ОстатокНулевой
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.ЭтоГруппа <> &ЭтоГруппа
| И Номенклатура.ПометкаУдаления <> &ПометкаУдаления";
РезультатЗапроса1 = Запрос1.Выполнить();
ВыборкаДетальныеЗаписи1 = РезультатЗапроса1.Выбрать();
Пока ВыборкаДетальныеЗаписи1.Следующий() Цикл
Запрос2 = Новый Запрос;
Запрос2.УстановитьПараметр("Ссылка", ВыборкаДетальныеЗаписи1.Ссылка);
Запрос2.Текст = "ВЫБРАТЬ
| СУММА(СвободныеОстаткиОстатки.ВНаличииОстаток - СвободныеОстаткиОстатки.ВРезервеСоСкладаОстаток) КАК ВНаличииОстаток
|ИЗ
| РегистрНакопления.СвободныеОстатки.Остатки КАК СвободныеОстаткиОстатки
|ГДЕ
| СвободныеОстаткиОстатки.Номенклатура.Ссылка = &Ссылка";
РезультатЗапроса2 = Запрос2.Выполнить();
ВыборкаДетальныеЗаписи2 = РезультатЗапроса2.Выбрать();
Пока ВыборкаДетальныеЗаписи2.Следующий() Цикл
Если ВыборкаДетальныеЗаписи2.ВНаличииОстаток = NULL ИЛИ ВыборкаДетальныеЗаписи2.ВНаличииОстаток = НеОпределено ИЛИ ВыборкаДетальныеЗаписи2.ВНаличииОстаток = 0 Тогда
Если ВыборкаДетальныеЗаписи1.ОстатокНулевой <> Истина Тогда
// закоменттировано за ненадобностью 30062016
//СсылкаНаОбъект = ВыборкаДетальныеЗаписи1.Ссылка;
//ОбъектКарточкаНоменклатура = СсылкаНаОбъект.ПолучитьОбъект();
//ОбъектКарточкаНоменклатура.ОстатокНулевой = Истина;
//ОбъектКарточкаНоменклатура.ДатаПоследнейПроверки = ТекущаяДата();
//ОбъектКарточкаНоменклатура.ДатаВключенияТовара = '00010101000000';
//ОбъектКарточкаНоменклатура.ОбменДанными.Загрузка = Истина;
//ОбъектКарточкаНоменклатура.Записать();
Ном = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул",ВыборкаДетальныеЗаписи1.Артикул);
НомСтрокаДопРеквизита = ПолучитьСтрокуДопРеквизита(Ном,ДопРеквизитДатаВключения);
НомО = Ном.ПолучитьОбъект();
Если НомСтрокаДопРеквизита <> NULL Тогда
ТабДок = НомО.ДополнительныеРеквизиты;
ТабДок[НомСтрокаДопРеквизита-1].Свойство = ДопРеквизитДатаВключения;
ТабДок[НомСтрокаДопРеквизита-1].Значение = '00010101000001';
Иначе
НовыйРеквизит = НомО.ДополнительныеРеквизиты.Добавить(); //.Вставить() .Получить();
НовыйРеквизит.Свойство = ДопРеквизитДатаВключения;
НовыйРеквизит.Значение = '00010101000001';
КонецЕсли;
НомО.ДатаВключенияТовара = '00010101000001';
НомО.ДатаПоследнейПроверки = ТекущаяДата();
НомО.ОстатокНулевой = Истина;
НомО.ОбменДанными.Загрузка = Истина;
НомО.Записать()
КонецЕсли
Иначе
Если ВыборкаДетальныеЗаписи1.ОстатокНулевой = Истина Тогда
// закоменттировано за ненадобностью 30062016
//СсылкаНаОбъект = ВыборкаДетальныеЗаписи1.Ссылка;
//ОбъектКарточкаНоменклатура = СсылкаНаОбъект.ПолучитьОбъект();
//ОбъектКарточкаНоменклатура.ОстатокНулевой = Ложь;
//ОбъектКарточкаНоменклатура.ДатаВключенияТовара = ТекущаяДата();
//ОбъектКарточкаНоменклатура.ОбменДанными.Загрузка = Истина;
//ОбъектКарточкаНоменклатура.Записать();
Ном = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул",ВыборкаДетальныеЗаписи1.Артикул);
НомСтрокаДопРеквизита = ПолучитьСтрокуДопРеквизита(Ном,ДопРеквизитДатаВключения);
НомО = Ном.ПолучитьОбъект();
Если НомСтрокаДопРеквизита <> NULL Тогда
ТабДок = НомО.ДополнительныеРеквизиты;
ТабДок[НомСтрокаДопРеквизита-1].Свойство = ДопРеквизитДатаВключения;
ТабДок[НомСтрокаДопРеквизита-1].Значение = ТекущаяДата();
Иначе
НовыйРеквизит = НомО.ДополнительныеРеквизиты.Добавить(); //.Вставить() .Получить();
НовыйРеквизит.Свойство = ДопРеквизитДатаВключения;
НовыйРеквизит.Значение = ТекущаяДата();
КонецЕсли;
НомО.ДатаВключенияТовара = ТекущаяДата();
НомО.ОстатокНулевой = Ложь;
НомО.ОбменДанными.Загрузка = Истина;
НомО.Записать()
//другой вариант изменения доп регистра
//ДопРеквизитДатаВключения = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(СвойствоДопРегистра);
//Ном = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул",ВыборкаДетальныеЗаписи1.Артикул); //.НайтиПоНаименованию("Прикормка Traper Magic 00009");
//НомО = Ном.ПолучитьОбъект();
//НовыйРеквизит = НомО.ДополнительныеРеквизиты.Добавить(); //.Вставить() .Получить();
//НовыйРеквизит.Свойство = ДопРеквизитДатаВключения;
//НовыйРеквизит.Значение = ТекущаяДата();
//Попытка
// НомО.Записать();
//Исключение
// //Сообщить("Не удалось занисать " + НомО.Наименование);
//КонецПопытки;
КонецЕсли
КонецЕсли
КонецЦикла
КонецЦикла
КонецПроцедуры // ПроизводимПроверкуНоменклатурыНаОстаток()
//Получаем номер строки пользовательского доп регистра
Функция ПолучитьСтрокуДопРеквизита(Ссылка,Свойство)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Свойство", Свойство);
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.Текст = "ВЫБРАТЬ
| МАКСИМУМ(НоменклатураДополнительныеРеквизиты.НомерСтроки) КАК НомерСтроки
|ИЗ
| Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты
|ГДЕ
| НоменклатураДополнительныеРеквизиты.Ссылка = &Ссылка
| И НоменклатураДополнительныеРеквизиты.Свойство = &Свойство";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Если ВыборкаДетальныеЗаписи.Количество() <> 0 Тогда
ВыборкаДетальныеЗаписи.Следующий();
Возврат ВыборкаДетальныеЗаписи.НомерСтроки
Иначе
Возврат NULL
КонецЕсли
КонецФункции // ПолучитьСтрокуДопРеквизита()
Функция ПолучаемСвойствоДопРегистра()
//получаем данные "свойства" дополнительного реквизита
Запрос3 = Новый Запрос;
Запрос3.Текст = "ВЫБРАТЬ
| НаборыДополнительныхРеквизитовИСведенийДополнительныеРеквизиты.Свойство КАК Свойство
|ИЗ
| Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеРеквизиты КАК НаборыДополнительныхРеквизитовИСведенийДополнительныеРеквизиты
|ГДЕ
| НаборыДополнительныхРеквизитовИСведенийДополнительныеРеквизиты.Ссылка.Наименование = ""Основной вид""
| И НаборыДополнительныхРеквизитовИСведенийДополнительныеРеквизиты.НомерСтроки = 22";
РезультатЗапроса3 = Запрос3.Выполнить();
ВыборкаДетальныеЗаписи3 = РезультатЗапроса3.Выбрать();
ВыборкаДетальныеЗаписи3.Следующий();
Возврат ВыборкаДетальныеЗаписи3.Свойство
КонецФункции // ПолучаемСвойствоДопРегистра()
//
Процедура ПроизводимДобавлениеДопРеквизитаДатаВключения() Экспорт
СвойствоДопРегистра = ПолучаемСвойствоДопРегистра();
ДопРеквизитДатаВключения = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(СвойствоДопРегистра);
Запрос1 = Новый Запрос;
Запрос1.УстановитьПараметр("ПометкаУдаления", Истина );
Запрос1.УстановитьПараметр("ЭтоГруппа", Истина);
Запрос1.Текст = "ВЫБРАТЬ
| Номенклатура.Артикул
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.ЭтоГруппа <> &ЭтоГруппа
| И Номенклатура.ПометкаУдаления <> &ПометкаУдаления";
РезультатЗапроса1 = Запрос1.Выполнить();
ВыборкаДетальныеЗаписи1 = РезультатЗапроса1.Выбрать();
Пока ВыборкаДетальныеЗаписи1.Следующий() Цикл
Ном = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул",ВыборкаДетальныеЗаписи1.Артикул);
НомСтрокаДопРеквизита = ПолучитьСтрокуДопРеквизита(Ном,ДопРеквизитДатаВключения);
Если НомСтрокаДопРеквизита = NULL Тогда
НомО = Ном.ПолучитьОбъект();
НовыйРеквизит = НомО.ДополнительныеРеквизиты.Добавить(); //.Вставить() .Получить();
НовыйРеквизит.Свойство = ДопРеквизитДатаВключения;
НовыйРеквизит.Значение = '00010101000001';
НомО.Записать()
Иначе
НомО = Ном.ПолучитьОбъект();
ТабДок = НомО.ДополнительныеРеквизиты;
ТабДок[НомСтрокаДопРеквизита-1].Свойство = ДопРеквизитДатаВключения;
ТабДок[НомСтрокаДопРеквизита-1].Значение = '00010101000001';
НомО.Записать()
КонецЕсли;
КонецЦикла
КонецПроцедуры // ПроизводимПроверкуНоменклатурыНаОстаток()
//
// выгружалась дата в отдельный стандартный реквизит "ДатаВключенияТовара"
//
// Выгрузка производится в дополнительный пользовательский реквизит "Дата включения номенклатура"
//
Процедура ПроизводимПроверкуНоменклатурыНаОстаток() Экспорт
СвойствоДопРегистра = ПолучаемСвойствоДопРегистра();
ДопРеквизитДатаВключения = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(СвойствоДопРегистра);
Запрос1 = Новый Запрос;
Запрос1.УстановитьПараметр("ПометкаУдаления", Истина );
Запрос1.УстановитьПараметр("ЭтоГруппа", Истина);
Запрос1.Текст = "ВЫБРАТЬ
| Номенклатура.Ссылка,
| Номенклатура.Артикул,
| Номенклатура.ОстатокНулевой
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.ЭтоГруппа <> &ЭтоГруппа
| И Номенклатура.ПометкаУдаления <> &ПометкаУдаления";
РезультатЗапроса1 = Запрос1.Выполнить();
ВыборкаДетальныеЗаписи1 = РезультатЗапроса1.Выбрать();
Пока ВыборкаДетальныеЗаписи1.Следующий() Цикл
Запрос2 = Новый Запрос;
Запрос2.УстановитьПараметр("Ссылка", ВыборкаДетальныеЗаписи1.Ссылка);
Запрос2.Текст = "ВЫБРАТЬ
| СУММА(СвободныеОстаткиОстатки.ВНаличииОстаток - СвободныеОстаткиОстатки.ВРезервеСоСкладаОстаток) КАК ВНаличииОстаток
|ИЗ
| РегистрНакопления.СвободныеОстатки.Остатки КАК СвободныеОстаткиОстатки
|ГДЕ
| СвободныеОстаткиОстатки.Номенклатура.Ссылка = &Ссылка";
РезультатЗапроса2 = Запрос2.Выполнить();
ВыборкаДетальныеЗаписи2 = РезультатЗапроса2.Выбрать();
Пока ВыборкаДетальныеЗаписи2.Следующий() Цикл
Если ВыборкаДетальныеЗаписи2.ВНаличииОстаток = NULL ИЛИ ВыборкаДетальныеЗаписи2.ВНаличииОстаток = НеОпределено ИЛИ ВыборкаДетальныеЗаписи2.ВНаличииОстаток = 0 Тогда
Если ВыборкаДетальныеЗаписи1.ОстатокНулевой <> Истина Тогда
// закоменттировано за ненадобностью 30062016
//СсылкаНаОбъект = ВыборкаДетальныеЗаписи1.Ссылка;
//ОбъектКарточкаНоменклатура = СсылкаНаОбъект.ПолучитьОбъект();
//ОбъектКарточкаНоменклатура.ОстатокНулевой = Истина;
//ОбъектКарточкаНоменклатура.ДатаПоследнейПроверки = ТекущаяДата();
//ОбъектКарточкаНоменклатура.ДатаВключенияТовара = '00010101000000';
//ОбъектКарточкаНоменклатура.ОбменДанными.Загрузка = Истина;
//ОбъектКарточкаНоменклатура.Записать();
Ном = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул",ВыборкаДетальныеЗаписи1.Артикул);
НомСтрокаДопРеквизита = ПолучитьСтрокуДопРеквизита(Ном,ДопРеквизитДатаВключения);
НомО = Ном.ПолучитьОбъект();
Если НомСтрокаДопРеквизита <> NULL Тогда
ТабДок = НомО.ДополнительныеРеквизиты;
ТабДок[НомСтрокаДопРеквизита-1].Свойство = ДопРеквизитДатаВключения;
ТабДок[НомСтрокаДопРеквизита-1].Значение = '00010101000001';
Иначе
НовыйРеквизит = НомО.ДополнительныеРеквизиты.Добавить(); //.Вставить() .Получить();
НовыйРеквизит.Свойство = ДопРеквизитДатаВключения;
НовыйРеквизит.Значение = '00010101000001';
КонецЕсли;
НомО.ДатаВключенияТовара = '00010101000001';
НомО.ДатаПоследнейПроверки = ТекущаяДата();
НомО.ОстатокНулевой = Истина;
НомО.ОбменДанными.Загрузка = Истина;
НомО.Записать()
КонецЕсли
Иначе
Если ВыборкаДетальныеЗаписи1.ОстатокНулевой = Истина Тогда
// закоменттировано за ненадобностью 30062016
//СсылкаНаОбъект = ВыборкаДетальныеЗаписи1.Ссылка;
//ОбъектКарточкаНоменклатура = СсылкаНаОбъект.ПолучитьОбъект();
//ОбъектКарточкаНоменклатура.ОстатокНулевой = Ложь;
//ОбъектКарточкаНоменклатура.ДатаВключенияТовара = ТекущаяДата();
//ОбъектКарточкаНоменклатура.ОбменДанными.Загрузка = Истина;
//ОбъектКарточкаНоменклатура.Записать();
Ном = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул",ВыборкаДетальныеЗаписи1.Артикул);
НомСтрокаДопРеквизита = ПолучитьСтрокуДопРеквизита(Ном,ДопРеквизитДатаВключения);
НомО = Ном.ПолучитьОбъект();
Если НомСтрокаДопРеквизита <> NULL Тогда
ТабДок = НомО.ДополнительныеРеквизиты;
ТабДок[НомСтрокаДопРеквизита-1].Свойство = ДопРеквизитДатаВключения;
ТабДок[НомСтрокаДопРеквизита-1].Значение = ТекущаяДата();
Иначе
НовыйРеквизит = НомО.ДополнительныеРеквизиты.Добавить(); //.Вставить() .Получить();
НовыйРеквизит.Свойство = ДопРеквизитДатаВключения;
НовыйРеквизит.Значение = ТекущаяДата();
КонецЕсли;
НомО.ДатаВключенияТовара = ТекущаяДата();
НомО.ОстатокНулевой = Ложь;
НомО.ОбменДанными.Загрузка = Истина;
НомО.Записать()
//другой вариант изменения доп регистра
//ДопРеквизитДатаВключения = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(СвойствоДопРегистра);
//Ном = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул",ВыборкаДетальныеЗаписи1.Артикул); //.НайтиПоНаименованию("Прикормка Traper Magic 00009");
//НомО = Ном.ПолучитьОбъект();
//НовыйРеквизит = НомО.ДополнительныеРеквизиты.Добавить(); //.Вставить() .Получить();
//НовыйРеквизит.Свойство = ДопРеквизитДатаВключения;
//НовыйРеквизит.Значение = ТекущаяДата();
//Попытка
// НомО.Записать();
//Исключение
// //Сообщить("Не удалось занисать " + НомО.Наименование);
//КонецПопытки;
КонецЕсли
КонецЕсли
КонецЦикла
КонецЦикла
КонецПроцедуры // ПроизводимПроверкуНоменклатурыНаОстаток()
//Получаем номер строки пользовательского доп регистра
Функция ПолучитьСтрокуДопРеквизита(Ссылка,Свойство)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Свойство", Свойство);
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.Текст = "ВЫБРАТЬ
| МАКСИМУМ(НоменклатураДополнительныеРеквизиты.НомерСтроки) КАК НомерСтроки
|ИЗ
| Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты
|ГДЕ
| НоменклатураДополнительныеРеквизиты.Ссылка = &Ссылка
| И НоменклатураДополнительныеРеквизиты.Свойство = &Свойство";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Если ВыборкаДетальныеЗаписи.Количество() <> 0 Тогда
ВыборкаДетальныеЗаписи.Следующий();
Возврат ВыборкаДетальныеЗаписи.НомерСтроки
Иначе
Возврат NULL
КонецЕсли
КонецФункции // ПолучитьСтрокуДопРеквизита()
Функция ПолучаемСвойствоДопРегистра()
//получаем данные "свойства" дополнительного реквизита
Запрос3 = Новый Запрос;
Запрос3.Текст = "ВЫБРАТЬ
| НаборыДополнительныхРеквизитовИСведенийДополнительныеРеквизиты.Свойство КАК Свойство
|ИЗ
| Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеРеквизиты КАК НаборыДополнительныхРеквизитовИСведенийДополнительныеРеквизиты
|ГДЕ
| НаборыДополнительныхРеквизитовИСведенийДополнительныеРеквизиты.Ссылка.Наименование = ""Основной вид""
| И НаборыДополнительныхРеквизитовИСведенийДополнительныеРеквизиты.НомерСтроки = 22";
РезультатЗапроса3 = Запрос3.Выполнить();
ВыборкаДетальныеЗаписи3 = РезультатЗапроса3.Выбрать();
ВыборкаДетальныеЗаписи3.Следующий();
Возврат ВыборкаДетальныеЗаписи3.Свойство
КонецФункции // ПолучаемСвойствоДопРегистра()
//
Процедура ПроизводимДобавлениеДопРеквизитаДатаВключения() Экспорт
СвойствоДопРегистра = ПолучаемСвойствоДопРегистра();
ДопРеквизитДатаВключения = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(СвойствоДопРегистра);
Запрос1 = Новый Запрос;
Запрос1.УстановитьПараметр("ПометкаУдаления", Истина );
Запрос1.УстановитьПараметр("ЭтоГруппа", Истина);
Запрос1.Текст = "ВЫБРАТЬ
| Номенклатура.Артикул
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.ЭтоГруппа <> &ЭтоГруппа
| И Номенклатура.ПометкаУдаления <> &ПометкаУдаления";
РезультатЗапроса1 = Запрос1.Выполнить();
ВыборкаДетальныеЗаписи1 = РезультатЗапроса1.Выбрать();
Пока ВыборкаДетальныеЗаписи1.Следующий() Цикл
Ном = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул",ВыборкаДетальныеЗаписи1.Артикул);
НомСтрокаДопРеквизита = ПолучитьСтрокуДопРеквизита(Ном,ДопРеквизитДатаВключения);
Если НомСтрокаДопРеквизита = NULL Тогда
НомО = Ном.ПолучитьОбъект();
НовыйРеквизит = НомО.ДополнительныеРеквизиты.Добавить(); //.Вставить() .Получить();
НовыйРеквизит.Свойство = ДопРеквизитДатаВключения;
НовыйРеквизит.Значение = '00010101000001';
НомО.Записать()
Иначе
НомО = Ном.ПолучитьОбъект();
ТабДок = НомО.ДополнительныеРеквизиты;
ТабДок[НомСтрокаДопРеквизита-1].Свойство = ДопРеквизитДатаВключения;
ТабДок[НомСтрокаДопРеквизита-1].Значение = '00010101000001';
НомО.Записать()
КонецЕсли;
КонецЦикла
КонецПроцедуры // ПроизводимПроверкуНоменклатурыНаОстаток()
Комментариев нет:
Отправить комментарий