Продажа собственной фирме. Заполнение номенклатуры по отрицательным остаткам фирмы-покупателя

1. SlavaVNL 8 18.09.11 09:31 Сейчас в теме
Товарищи 1с-ники, помогите доделать процедуру заполнения табличной части. документ Продажа собственной фирме (в конфигураторе Быстрая продажа).
Я сделал запрос по регистру остатки ТМЦ, получаю в итоге номенклатуру и количество. Могу передать их в табличную часть. А как сделать чтобы остальные поля табличной части заполнялись/рассчитывались? Чувствую, что где-то рядом ответ, а не получается. Уже комп выкинуть хочется.
Вот что сделано:

Процедура ЗаполнитьПоОстаткам()
//проверки
Если Форма.Параметр <> "Перемещение" Тогда
Предупреждение("Только для внутрифирменных продаж");
Возврат;
ИначеЕсли КоличествоСтрок() <> 0 Тогда
Если Вопрос("Заполнить по отрицательным остаткам склада покупателя (перед заполнением табличная часть будет очищена)?", "Да+Нет", 60) <> "Да" Тогда
Возврат;
КонецЕсли;
Сообщить("заполняю");
УдалитьСтроки();
КонецЕсли;
\\конец проверок

ТекстЗапросаОстатков="
|ФирмаПокупат = Регистр.ОстаткиТМЦ.Фирма;
|Номенклатура = Регистр.ОстаткиТМЦ.Номенклатура;
|СкладПокупат = Регистр.ОстаткиТМЦ.Склад;
|Количество = Регистр.ОстаткиТМЦ.Количество;
|Функция КоличествоКонОст = КонОст(Количество);
|Группировка Номенклатура без групп;
|Условие(ФирмаПокупат=ФирмаПокупателя);
|Условие(СкладПокупат=СкладПокупателя);";

ЗапросПоОстаткам = СоздатьОбъект("Запрос");
Если ЗапросПоОстаткам.Выполнить(ТекстЗапросаОстатков) = 0 Тогда
Возврат;
КонецЕсли;
флаг=0; // для отслеживания того что отбор был

СписокНоменклатуры =СоздатьОбъект("СписокЗначений"); // думаю пригодится.

Пока ЗапросПоОстаткам.Группировка(1) = 1 Цикл
Если ЗапросПоОстаткам.КоличествоКонОст < 0 Тогда //нам нужны отрицательные остатки
флаг=1;
НоваяСтрока();
Номенклатура=ЗапросПоОстаткам.Номенклатура; // поле таб части
КоличествоОст=ЗапросПоОстаткам.КоличествоКонОст-ЗапросПоОстаткам.КоличествоКонОст*2; //остатки со знаком - надо +
Количество=КоличествоОст; //поле таб части
Единица = ЗапросПоОстаткам.Номенклатура.ОсновнаяЕдиница; //вроде бы правильно ?
Коэффициент= ЗапросПоОстаткам.Номенклатура.ОсновнаяЕдиница.Коэффициент; // не уверен что во всех случаях так.

СписокНоменклатуры.ДобавитьЗначение(Номенклатура); //заполняем список значений но он,
СписокНоменклатуры.ДобавитьЗначение(Количество); //почему то не заполняется

Сообщить(ЗапросПоОстаткам.Номенклатура); // проверял: запрос отрабатывается четко.
Сообщить(КоличествоОст);

КонецЕсли;
КонецЦикла;

Если флаг=0 Тогда
Сообщить("У организации " + ФирмаПокупателя + " по складу " + СкладПокупателя + " не найдено отрицательных остатков");
Возврат;
КонецЕсли;

КонецПроцедуры


подскажите как по уму сделать? через отладчик смотрел как что считает все равно не соображу как сделать, там наворочено куча всего.
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. arc581 18.09.11 12:39 Сейчас в теме
Пока ЗапросПоОстаткам.Группировка(1) = 1 Цикл
Если ЗапросПоОстаткам.КоличествоКонОст < 0 Тогда //нам нужны отрицательные остатки
флаг=1;
НоваяСтрока();
Номенклатура=ЗапросПоОстаткам.Номенклатура;
Количество=-ЗапросПоОстаткам.КоличествоКонОст;
глПерсчетТаблЧасти(Контекст,"Номенклатура");
глПерсчетТаблЧасти(Контекст,"Количество");
КонецЕсли;
КонецЦикла;
SlavaVNL; +1 Ответить
8. 2sw 18 05.05.12 19:46 Сейчас в теме
(3) arc581,
глПерсчетТаблЧасти(Контекст,"Номенклатура");
глПерсчетТаблЧасти(Контекст,"Количество");


правильно
глПересчетТаблЧасти(Контекст,"Номенклатура");
глПересчетТаблЧасти(Контекст,"Количество");

))
2. MaxDavid 127 18.09.11 10:48 Сейчас в теме
Какие поля в табличной части тебе надо заполнять? Если цену/сумму, то это процедура Пересчет().
То есть заполняешь номенклатуру/количество, а потом перебором строк дозаполняешь что тебе надо.
Чем не устраивает?
SlavaVNL; +1 Ответить
4. SlavaVNL 8 18.09.11 13:23 Сейчас в теме
Блин. получилось!!! Спасибо всем. А я сидел велосипед изобретал.

arc581, Количество=-ЗапросПоОстаткам.КоличествоКонОст; занятно. я бы так не догадался.
5. AVVA 21.09.11 20:14 Сейчас в теме
Я с регистрами плохо дружу :(, поэтому сделал, чтобы по документу-инвентаризации вводилась приходная накладная по позициям с отрицательными строками. Минимум программирования.
6. Марфуша 16.01.12 22:42 Сейчас в теме
Спасибо! Подскажите, где вставить условие, чтобы в табличную часть попадали только товары с ценой?
7. Марфуша 16.01.12 23:17 Сейчас в теме
Пробую вот так

ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
Если Сумма<>0 Тогда
Продолжить;
Иначе
УдалитьСтроку();
КонецЕсли;
КонецЦикла;

Не получается((( Где ошибка, подскажите, пожалуйста!
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот