L
Lotar
1С 7.7 Торговля+Склад
В справочник Номенклатура добавлены следующие реквизиты: ФлВозврТары (Тип значения Числовой) и ВозврТара (Тип значения Справочник.Номенклатура). ФлВозврТары принимает значение равное 0 если ВозврТара не определена и 1 иначе. Необходимо сделать следующее: в документе Реализация по нажатию добавленной кнопки каждый элемент в таблице проверяется на наличие ВозврТара через ФлВозврТары, если элемент таблицы имеет ВозврТара тогда надо добавить в таблицу новый элемент с наименованием ВозврТара текущего элемента и количеством его же. Но если в таблице уже есть такая позиция, то надо просто изменить ее количество. Например: есть в справочнике Номенклатура товар Творог 15кг. ВозврТара для него установлена позицией Номеклатуры Ведро 15кг, по нажатию кнопки в док.Реализация должна произвестись проверка, есть ли позиция Ведро 15кг в таблице, если есть, то прибавить к количество творог 15кг к тому количеству ведер, то что уже есть. Если же позиции Ведро 15кг нет, то добавить новую позицию Ведро 15кг и проставить количество.
Проблема в следующем если в таблице имеется несколько позиций с одной и той же ВозврТара то подсчет идет не правильно. Например если добавить в таблицу 10 строк товаров с одинаковой ВозврТара, тогда 3, 5, 7, 9 строка считаться не будет. То есть сначала считаются первые две, третья не считается, а потом через одну. Никак не найду в чем причина.
Вот код который я наваял. Особенно не смейтесь если что. Программлю на 1с неделю всего.
Функция ПоискВозврТары(ВозврТара, Колво)
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
Если Номенклатура = ВозврТара Тогда
Количество = Количество+Колво;
Возврат 1;
КонецЕсли;
КонецЦикла;
НоваяСтрока();
Номенклатура = ВозврТара;
Количество = КолВо;
Возврат 0;
КонецФункции
Процедура ПоКнопкеВозврТара()
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
НомСтр=НомерСтроки;
Если Номенклатура.ФлВозврТары = 1 Тогда
СтрНайденная=Номенклатура.ВозврТара;
КолвоНайденное=Количество;
ПоискВозврТары(СтрНайденная, КолвоНайденное);
КонецЕсли;
НомерСтроки=НомСтр+1;
КонецЦикла;
КонецПроцедуры
В справочник Номенклатура добавлены следующие реквизиты: ФлВозврТары (Тип значения Числовой) и ВозврТара (Тип значения Справочник.Номенклатура). ФлВозврТары принимает значение равное 0 если ВозврТара не определена и 1 иначе. Необходимо сделать следующее: в документе Реализация по нажатию добавленной кнопки каждый элемент в таблице проверяется на наличие ВозврТара через ФлВозврТары, если элемент таблицы имеет ВозврТара тогда надо добавить в таблицу новый элемент с наименованием ВозврТара текущего элемента и количеством его же. Но если в таблице уже есть такая позиция, то надо просто изменить ее количество. Например: есть в справочнике Номенклатура товар Творог 15кг. ВозврТара для него установлена позицией Номеклатуры Ведро 15кг, по нажатию кнопки в док.Реализация должна произвестись проверка, есть ли позиция Ведро 15кг в таблице, если есть, то прибавить к количество творог 15кг к тому количеству ведер, то что уже есть. Если же позиции Ведро 15кг нет, то добавить новую позицию Ведро 15кг и проставить количество.
Проблема в следующем если в таблице имеется несколько позиций с одной и той же ВозврТара то подсчет идет не правильно. Например если добавить в таблицу 10 строк товаров с одинаковой ВозврТара, тогда 3, 5, 7, 9 строка считаться не будет. То есть сначала считаются первые две, третья не считается, а потом через одну. Никак не найду в чем причина.
Вот код который я наваял. Особенно не смейтесь если что. Программлю на 1с неделю всего.
Функция ПоискВозврТары(ВозврТара, Колво)
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
Если Номенклатура = ВозврТара Тогда
Количество = Количество+Колво;
Возврат 1;
КонецЕсли;
КонецЦикла;
НоваяСтрока();
Номенклатура = ВозврТара;
Количество = КолВо;
Возврат 0;
КонецФункции
Процедура ПоКнопкеВозврТара()
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
НомСтр=НомерСтроки;
Если Номенклатура.ФлВозврТары = 1 Тогда
СтрНайденная=Номенклатура.ВозврТара;
КолвоНайденное=Количество;
ПоискВозврТары(СтрНайденная, КолвоНайденное);
КонецЕсли;
НомерСтроки=НомСтр+1;
КонецЦикла;
КонецПроцедуры