Имя: Пароль:
1C
1С v8
Запись в регистр сведений
0 Ly_Alena
 
08.12.14
06:15
Такая задача: Из документа КоммерческийПроект пишутся данные в регистр сведений ЦеныНомерклатуры. Нужно чтобы записывалась вся номенклатура, которая есть в КомПроекте и + еще записывалась бы та Номенклатура, в дополнительном описании у которой не пусто. И записывалась бы заданной строчкой - как название номенклатуры с добавкой в скобочках для спецификации. Загвоздка в том, что если в документе КомПроект - есть несколько номенклатур, чье дополнительное описание совпадает - то соответсвенно выдает ошибку - что такое поле уже существует.

Код для вывода просто списка номенклатуры:

Запрос = Новый Запрос;    
    Запрос.УстановитьПараметр("Ссылка", ЭтотОбъект.Ссылка);
    Запрос.УстановитьПараметр("Дата", ЭтотОбъект.Дата);
    Запрос.Текст = "ВЫБРАТЬ
                   |    КоммерческийПроект.Дата КАК Дата,
                   |    КоммерческийПроект.ВалютаДокумента КАК ВалютаДокумента,
                   |    КоммерческийПроектТовары.Номенклатура КАК Номенклатура,
                   |    МАКСИМУМ(КоммерческийПроектТовары.ЗаявкаНаЗакуп) КАК ЗаявкаНаЗакуп,
                   |    МАКСИМУМ(КоммерческийПроектТовары.ЦенаВВ) КАК ЦенаВВ,
                   |    МАКСИМУМ(КоммерческийПроектТовары.ЦенаВУУ) КАК ЦенаВУУ,
                   |    МАКСИМУМ(КоммерческийПроектТовары.ВсегоВВ / КоммерческийПроектТовары.Количество) КАК СтоимостьВВ,
                   |    МАКСИМУМ(КоммерческийПроектТовары.ВсегоВУУ / КоммерческийПроектТовары.Количество) КАК СтоимостьВУУ,
                   |    КоммерческийПроектТовары.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
                   |    МАКСИМУМ(ВЫБОР
                   |            КОГДА ЕСТЬNULL(ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.КоличествоОстаток, 0) > 0
                   |                    И НЕ КоммерческийПроект.Контрагент.Код = ""о05691""
                   |                    И НЕ КоммерческийПроект.Контрагент.Код = ""к01805""
                   |                    И НЕ КоммерческийПроект.Контрагент.Код = ""о05880""
                   |                ТОГДА (ЕСТЬNULL(ВложенныйЗапрос.Цена * ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.КоличествоОстаток, 0) + ЕСТЬNULL(КоммерческийПроектТовары.ВсегоВУУ, 0)) / (ЕСТЬNULL(ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.КоличествоОстаток, 0) + ЕСТЬNULL(КоммерческийПроектТовары.Количество, 0))
                   |            ИНАЧЕ ВЫБОР
                   |                    КОГДА ЕСТЬNULL(ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.КоличествоОстаток, 0) > 0
                   |                            И КоммерческийПроект.Контрагент.Код = ""о05691""
                   |                        ТОГДА (ЕСТЬNULL(ВложенныйЗапрос.Цена * ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.КоличествоОстаток, 0) / 100 * 101 + ЕСТЬNULL(КоммерческийПроектТовары.ВсегоВУУ, 0)) / (ЕСТЬNULL(ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.КоличествоОстаток, 0) + ЕСТЬNULL(КоммерческийПроектТовары.Количество, 0))
                   |                    ИНАЧЕ ВЫБОР
                   |                            КОГДА ЕСТЬNULL(ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.КоличествоОстаток, 0) > 0
                   |                                    И КоммерческийПроект.Контрагент.Код = ""к01805""
                   |                                ТОГДА (ЕСТЬNULL(ВложенныйЗапрос.Цена * ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.КоличествоОстаток, 0) / 100 * 120 + ЕСТЬNULL(КоммерческийПроектТовары.ВсегоВУУ, 0)) / (ЕСТЬNULL(ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.КоличествоОстаток, 0) + ЕСТЬNULL(КоммерческийПроектТовары.Количество, 0))
                   |                            ИНАЧЕ ВЫБОР
                   |                                    КОГДА ЕСТЬNULL(ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.КоличествоОстаток, 0) > 0
                   |                                            И КоммерческийПроект.Контрагент.Код = ""о05880""
                   |                                        ТОГДА (ЕСТЬNULL(ВложенныйЗапрос.Цена * ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.КоличествоОстаток, 0) / 100 * 105 + ЕСТЬNULL(КоммерческийПроектТовары.ВсегоВУУ, 0)) / (ЕСТЬNULL(ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.КоличествоОстаток, 0) + ЕСТЬNULL(КоммерческийПроектТовары.Количество, 0))
                   |                                    ИНАЧЕ ВЫБОР
                   |                                            КОГДА ЕСТЬNULL(ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.КоличествоОстаток, 0) <= 0
                   |                                                ТОГДА ЕСТЬNULL(КоммерческийПроектТовары.ВсегоВУУ, 0) / ЕСТЬNULL(КоммерческийПроектТовары.Количество, 0)
                   |                                        КОНЕЦ
                   |                                КОНЕЦ
                   |                        КОНЕЦ
                   |                КОНЕЦ
                   |        КОНЕЦ) КАК Плановая,
                   |    КоммерческийПроектТовары.Номенклатура.ДополнительноеОписаниеНоменклатуры КАК ДополнительноеОписаниеНоменклатуры
                   |ИЗ
                   |    Документ.КоммерческийПроект.Товары КАК КоммерческийПроектТовары
                   |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.КоммерческийПроект КАК КоммерческийПроект
                   |        ПО КоммерческийПроектТовары.Ссылка = КоммерческийПроект.Ссылка
                   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладахБухгалтерскийУчет.Остатки(&Дата, Склад.Наименование ПОДОБНО ""%склад%"") КАК ПартииТоваровНаСкладахБухгалтерскийУчетОстатки
                   |        ПО КоммерческийПроектТовары.Номенклатура = ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.Номенклатура
                   |            И КоммерческийПроектТовары.Склад = ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.Склад
                   |            И КоммерческийПроектТовары.Номенклатура.ДополнительноеОписаниеНоменклатуры = ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.Номенклатура.ДополнительноеОписаниеНоменклатуры
                   |        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                   |            ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
                   |            ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура
                   |        ИЗ
                   |            РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ) КАК ЦеныНоменклатурыСрезПоследних
                   |        ГДЕ
                   |            ЦеныНоменклатурыСрезПоследних.ТипЦен.Код = ""000000008"") КАК ВложенныйЗапрос
                   |        ПО КоммерческийПроектТовары.Номенклатура = ВложенныйЗапрос.Номенклатура
                   |ГДЕ
                   |    КоммерческийПроект.Ссылка = &Ссылка
                   |    И КоммерческийПроектТовары.ЗаявкаНаЗакуп = ЗНАЧЕНИЕ(Документ.ЗаявкаНаЗакуп.ПустаяСсылка)
                   |    И КоммерческийПроект.Дата = &Дата
                   |
                   |СГРУППИРОВАТЬ ПО
                   |    КоммерческийПроектТовары.Номенклатура.ДополнительноеОписаниеНоменклатуры,
                   |    КоммерческийПроектТовары.Номенклатура,
                   |    КоммерческийПроект.Дата,
                   |    КоммерческийПроект.ВалютаДокумента,
                   |    КоммерческийПроектТовары.ЕдиницаИзмерения";
    Выборка = Запрос.Выполнить().Выбрать();
    Движения.ЦеныНоменклатуры.Очистить();
    Если Выборка.Количество()>0 Тогда
        Пока Выборка.Следующий() Цикл
            Если НЕ Выборка.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("Н00032926") ИЛИ Выборка.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("Н00025901") ИЛИ Выборка.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("Н00026343") ИЛИ Выборка.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("Н00026063") ИЛИ Выборка.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("Н00026141") ИЛИ Выборка.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("Н00016958") Тогда
                    Движения.ЦеныНоменклатуры.Записывать = Истина;        
                    Движение = Движения.ЦеныНоменклатуры.Добавить();
                      Движение.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000008");
                      Движение.Период = Дата;
                      Движение.Номенклатура = Выборка.Номенклатура;
                      Движение.ЕдиницаИзмерения = Выборка.ЕдиницаИзмерения;
                      Движение.Валюта = Справочники.Валюты.НайтиПоКоду("398");
                       Движение.Цена = Выборка.Плановая;
                ИначеЕсли Выборка.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("Н00032926") Тогда
                    Предупреждение ("Документ не будет проведен пока Номенклатура = Новое наименование");
                    Отказ=Истина;    
                КонецЕсли;
                Если Выборка.ДополнительноеОписаниеНоменклатуры="" Тогда
                    Возврат;
                Иначе
                    ПроцедураПроверка();
                КонецЕсли;
            КонецЦикла;
    КонецЕсли;


А Это процедура - где уже если в доп.описании что-то есть то выводит:

Процедура ПроцедураПроверка()

    Запрос = Новый Запрос;    
    Запрос.УстановитьПараметр("Ссылка", ЭтотОбъект.Ссылка);
    Запрос.УстановитьПараметр("Дата", ЭтотОбъект.Дата);
    Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
|    МАКСИМУМ(КоммерческийПроектТовары.ЦенаВВ) КАК ЦенаВВ,
|    МАКСИМУМ(КоммерческийПроектТовары.ЦенаВУУ) КАК ЦенаВУУ,
|    МАКСИМУМ(КоммерческийПроектТовары.ВсегоВВ / КоммерческийПроектТовары.Количество) КАК СтоимостьВВ,
|    МАКСИМУМ(КоммерческийПроектТовары.ВсегоВУУ / КоммерческийПроектТовары.Количество) КАК СтоимостьВУУ,
|    МАКСИМУМ(ВЫБОР
|            КОГДА ЕСТЬNULL(ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.КоличествоОстаток, 0) > 0
|                    И НЕ КоммерческийПроект.Контрагент.Код = ""о05691""
|                    И НЕ КоммерческийПроект.Контрагент.Код = ""к01805""
|                    И НЕ КоммерческийПроект.Контрагент.Код = ""о05880""
|                ТОГДА (ЕСТЬNULL(ВложенныйЗапрос.Цена * ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.КоличествоОстаток, 0) + ЕСТЬNULL(КоммерческийПроектТовары.ВсегоВУУ, 0)) / (ЕСТЬNULL(ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.КоличествоОстаток, 0) + ЕСТЬNULL(КоммерческийПроектТовары.Количество, 0))
|            ИНАЧЕ ВЫБОР
|                    КОГДА ЕСТЬNULL(ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.КоличествоОстаток, 0) > 0
|                            И КоммерческийПроект.Контрагент.Код = ""о05691""
|                        ТОГДА (ЕСТЬNULL(ВложенныйЗапрос.Цена * ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.КоличествоОстаток, 0) / 100 * 101 + ЕСТЬNULL(КоммерческийПроектТовары.ВсегоВУУ, 0)) / (ЕСТЬNULL(ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.КоличествоОстаток, 0) + ЕСТЬNULL(КоммерческийПроектТовары.Количество, 0))
|                    ИНАЧЕ ВЫБОР
|                            КОГДА ЕСТЬNULL(ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.КоличествоОстаток, 0) > 0
|                                    И КоммерческийПроект.Контрагент.Код = ""к01805""
|                                ТОГДА (ЕСТЬNULL(ВложенныйЗапрос.Цена * ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.КоличествоОстаток, 0) / 100 * 120 + ЕСТЬNULL(КоммерческийПроектТовары.ВсегоВУУ, 0)) / (ЕСТЬNULL(ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.КоличествоОстаток, 0) + ЕСТЬNULL(КоммерческийПроектТовары.Количество, 0))
|                            ИНАЧЕ ВЫБОР
|                                    КОГДА ЕСТЬNULL(ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.КоличествоОстаток, 0) > 0
|                                            И КоммерческийПроект.Контрагент.Код = ""о05880""
|                                        ТОГДА (ЕСТЬNULL(ВложенныйЗапрос.Цена * ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.КоличествоОстаток, 0) / 100 * 105 + ЕСТЬNULL(КоммерческийПроектТовары.ВсегоВУУ, 0)) / (ЕСТЬNULL(ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.КоличествоОстаток, 0) + ЕСТЬNULL(КоммерческийПроектТовары.Количество, 0))
|                                    ИНАЧЕ ВЫБОР
|                                            КОГДА ЕСТЬNULL(ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.КоличествоОстаток, 0) <= 0
|                                                ТОГДА ЕСТЬNULL(КоммерческийПроектТовары.ВсегоВУУ, 0) / ЕСТЬNULL(КоммерческийПроектТовары.Количество, 0)
|                                        КОНЕЦ
|                                КОНЕЦ
|                        КОНЕЦ
|                КОНЕЦ
|        КОНЕЦ) КАК Плановая,
|    КоммерческийПроектТовары.Номенклатура.ДополнительноеОписаниеНоменклатуры
|ИЗ
|    Документ.КоммерческийПроект.Товары КАК КоммерческийПроектТовары
|        ЛЕВОЕ СОЕДИНЕНИЕ Документ.КоммерческийПроект КАК КоммерческийПроект
|        ПО КоммерческийПроектТовары.Ссылка = КоммерческийПроект.Ссылка
|        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладахБухгалтерскийУчет.Остатки(&Дата, Склад.Наименование ПОДОБНО ""%склад%"") КАК ПартииТоваровНаСкладахБухгалтерскийУчетОстатки
|        ПО КоммерческийПроектТовары.Номенклатура = ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.Номенклатура
|            И КоммерческийПроектТовары.Склад = ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.Склад
|            И КоммерческийПроектТовары.Номенклатура.ДополнительноеОписаниеНоменклатуры = ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.Номенклатура.ДополнительноеОписаниеНоменклатуры
|        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
|            ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
|            ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура
|        ИЗ
|            РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ) КАК ЦеныНоменклатурыСрезПоследних
|        ГДЕ
|            ЦеныНоменклатурыСрезПоследних.ТипЦен.Код = ""000000008"") КАК ВложенныйЗапрос
|        ПО КоммерческийПроектТовары.Номенклатура = ВложенныйЗапрос.Номенклатура
|ГДЕ
|    КоммерческийПроект.Ссылка = &Ссылка
|    И КоммерческийПроектТовары.ЗаявкаНаЗакуп = ЗНАЧЕНИЕ(Документ.ЗаявкаНаЗакуп.ПустаяСсылка)
|    И КоммерческийПроект.Дата = &Дата
|    И КоммерческийПроектТовары.Номенклатура.ДополнительноеОписаниеНоменклатуры ПОДОБНО ""Стал ПЭ""
|
|СГРУППИРОВАТЬ ПО
|    КоммерческийПроектТовары.Номенклатура.ДополнительноеОписаниеНоменклатуры";
                  
                    
    Выборка2 = Запрос.Выполнить().Выбрать();
    Если Выборка2.Количество()>0 Тогда
        Пока Выборка2.Следующий() Цикл
            Движения.ЦеныНоменклатуры.Записывать = Истина;
            Движение = Движения.ЦеныНоменклатуры.Добавить();
            Движение.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000008");
            Движение.Период = Дата;
            Движение.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("Н00037304");
            Движение.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("кг");
            Движение.Валюта = Справочники.Валюты.НайтиПоКоду("398");
            Движение.Цена = Выборка2.Плановая;
        КонецЦикла;
    КонецЕсли;
КонецПроцедуры
1 Godofsin
 
08.12.14
06:23
Жееесть....
2 Ly_Alena
 
08.12.14
06:30
(1) конструктивно
3 Ly_Alena
 
08.12.14
06:37
Выборка в первом запросе немного другая:

Запрос = Новый Запрос;    
    Запрос.УстановитьПараметр("Ссылка", ЭтотОбъект.Ссылка);
    Запрос.УстановитьПараметр("Дата", ЭтотОбъект.Дата);
    Запрос.Текст = "ВЫБРАТЬ
                   |    КоммерческийПроект.Дата КАК Дата,
                   |    КоммерческийПроект.ВалютаДокумента КАК ВалютаДокумента,
                   |    КоммерческийПроектТовары.Номенклатура КАК Номенклатура,
                   |    МАКСИМУМ(КоммерческийПроектТовары.ЗаявкаНаЗакуп) КАК ЗаявкаНаЗакуп,
                   |    МАКСИМУМ(КоммерческийПроектТовары.ЦенаВВ) КАК ЦенаВВ,
                   |    МАКСИМУМ(КоммерческийПроектТовары.ЦенаВУУ) КАК ЦенаВУУ,
                   |    МАКСИМУМ(КоммерческийПроектТовары.ВсегоВВ / КоммерческийПроектТовары.Количество) КАК СтоимостьВВ,
                   |    МАКСИМУМ(КоммерческийПроектТовары.ВсегоВУУ / КоммерческийПроектТовары.Количество) КАК СтоимостьВУУ,
                   |    КоммерческийПроектТовары.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
                   |    МАКСИМУМ(ВЫБОР
                   |            КОГДА ЕСТЬNULL(ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.КоличествоОстаток, 0) > 0
                   |                    И НЕ КоммерческийПроект.Контрагент.Код = ""о05691""
                   |                    И НЕ КоммерческийПроект.Контрагент.Код = ""к01805""
                   |                    И НЕ КоммерческийПроект.Контрагент.Код = ""о05880""
                   |                ТОГДА (ЕСТЬNULL(ВложенныйЗапрос.Цена * ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.КоличествоОстаток, 0) + ЕСТЬNULL(КоммерческийПроектТовары.ВсегоВУУ, 0)) / (ЕСТЬNULL(ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.КоличествоОстаток, 0) + ЕСТЬNULL(КоммерческийПроектТовары.Количество, 0))
                   |            ИНАЧЕ ВЫБОР
                   |                    КОГДА ЕСТЬNULL(ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.КоличествоОстаток, 0) > 0
                   |                            И КоммерческийПроект.Контрагент.Код = ""о05691""
                   |                        ТОГДА (ЕСТЬNULL(ВложенныйЗапрос.Цена * ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.КоличествоОстаток, 0) / 100 * 101 + ЕСТЬNULL(КоммерческийПроектТовары.ВсегоВУУ, 0)) / (ЕСТЬNULL(ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.КоличествоОстаток, 0) + ЕСТЬNULL(КоммерческийПроектТовары.Количество, 0))
                   |                    ИНАЧЕ ВЫБОР
                   |                            КОГДА ЕСТЬNULL(ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.КоличествоОстаток, 0) > 0
                   |                                    И КоммерческийПроект.Контрагент.Код = ""к01805""
                   |                                ТОГДА (ЕСТЬNULL(ВложенныйЗапрос.Цена * ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.КоличествоОстаток, 0) / 100 * 120 + ЕСТЬNULL(КоммерческийПроектТовары.ВсегоВУУ, 0)) / (ЕСТЬNULL(ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.КоличествоОстаток, 0) + ЕСТЬNULL(КоммерческийПроектТовары.Количество, 0))
                   |                            ИНАЧЕ ВЫБОР
                   |                                    КОГДА ЕСТЬNULL(ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.КоличествоОстаток, 0) > 0
                   |                                            И КоммерческийПроект.Контрагент.Код = ""о05880""
                   |                                        ТОГДА (ЕСТЬNULL(ВложенныйЗапрос.Цена * ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.КоличествоОстаток, 0) / 100 * 105 + ЕСТЬNULL(КоммерческийПроектТовары.ВсегоВУУ, 0)) / (ЕСТЬNULL(ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.КоличествоОстаток, 0) + ЕСТЬNULL(КоммерческийПроектТовары.Количество, 0))
                   |                                    ИНАЧЕ ВЫБОР
                   |                                            КОГДА ЕСТЬNULL(ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.КоличествоОстаток, 0) <= 0
                   |                                                ТОГДА ЕСТЬNULL(КоммерческийПроектТовары.ВсегоВУУ, 0) / ЕСТЬNULL(КоммерческийПроектТовары.Количество, 0)
                   |                                        КОНЕЦ
                   |                                КОНЕЦ
                   |                        КОНЕЦ
                   |                КОНЕЦ
                   |        КОНЕЦ) КАК Плановая,
                   |    КоммерческийПроектТовары.Номенклатура.ДополнительноеОписаниеНоменклатуры КАК ДополнительноеОписаниеНоменклатуры
                   |ИЗ
                   |    Документ.КоммерческийПроект.Товары КАК КоммерческийПроектТовары
                   |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.КоммерческийПроект КАК КоммерческийПроект
                   |        ПО КоммерческийПроектТовары.Ссылка = КоммерческийПроект.Ссылка
                   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладахБухгалтерскийУчет.Остатки(&Дата, Склад.Наименование ПОДОБНО ""%склад%"") КАК ПартииТоваровНаСкладахБухгалтерскийУчетОстатки
                   |        ПО КоммерческийПроектТовары.Номенклатура = ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.Номенклатура
                   |            И КоммерческийПроектТовары.Склад = ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.Склад
                   |            И КоммерческийПроектТовары.Номенклатура.ДополнительноеОписаниеНоменклатуры = ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.Номенклатура.ДополнительноеОписаниеНоменклатуры
                   |        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                   |            ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
                   |            ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура
                   |        ИЗ
                   |            РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ) КАК ЦеныНоменклатурыСрезПоследних
                   |        ГДЕ
                   |            ЦеныНоменклатурыСрезПоследних.ТипЦен.Код = ""000000008"") КАК ВложенныйЗапрос
                   |        ПО КоммерческийПроектТовары.Номенклатура = ВложенныйЗапрос.Номенклатура
                   |ГДЕ
                   |    КоммерческийПроект.Ссылка = &Ссылка
                   |    И КоммерческийПроектТовары.ЗаявкаНаЗакуп = ЗНАЧЕНИЕ(Документ.ЗаявкаНаЗакуп.ПустаяСсылка)
                   |    И КоммерческийПроект.Дата = &Дата
                   |
                   |СГРУППИРОВАТЬ ПО
                   |    КоммерческийПроектТовары.Номенклатура,
                   |    КоммерческийПроект.Дата,
                   |    КоммерческийПроект.ВалютаДокумента,
                   |    КоммерческийПроектТовары.ЕдиницаИзмерения";
    Выборка = Запрос.Выполнить().Выбрать();
    Движения.ЦеныНоменклатуры.Очистить();
    Если Выборка.Количество()>0 Тогда
        Пока Выборка.Следующий() Цикл
            Если НЕ Выборка.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("Н00032926") ИЛИ Выборка.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("Н00025901") ИЛИ Выборка.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("Н00026343") ИЛИ Выборка.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("Н00026063") ИЛИ Выборка.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("Н00026141") ИЛИ Выборка.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("Н00016958") Тогда
                    Движения.ЦеныНоменклатуры.Записывать = Истина;        
                    Движение = Движения.ЦеныНоменклатуры.Добавить();
                      Движение.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("000000008");
                      Движение.Период = Дата;
                      Движение.Номенклатура = Выборка.Номенклатура;
                      Движение.ЕдиницаИзмерения = Выборка.ЕдиницаИзмерения;
                      Движение.Валюта = Справочники.Валюты.НайтиПоКоду("398");
                       Движение.Цена = Выборка.Плановая;
                ИначеЕсли Выборка.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("Н00032926") Тогда
                    Предупреждение ("Документ не будет проведен пока Номенклатура = Новое наименование");
                    Отказ=Истина;    
                КонецЕсли;
                            КонецЦикла;
            Пока Выборка.Следующий() Цикл
                 Если Выборка.ДополнительноеОписаниеНоменклатуры = "" Тогда
                    Возврат;
                Иначе
                    ПроцедураПроверка();
                КонецЕсли;
            КонецЦикла;
    КонецЕсли;
4 wertyu
 
08.12.14
06:38
(1) +100500
5 wertyu
 
08.12.14
06:40
(2) начнём разгребать потихоньку
для начала
Если Выборка.Количество()>0 Тогда
без Иначе не имеет смысла
6 wertyu
 
08.12.14
06:42
(2) локальные переменные можно называть одинаково, Выборка и Выборка2
7 Redkiy
 
08.12.14
06:43
Пятнично, но фотка есть - надо помогать.
8 Ly_Alena
 
08.12.14
06:44
(6) Выборка2 мне нужна, потому как первый общий запрос - который выводит список номенклатуры один, а выборка 2 - это запросы на спецификацию номенклатуры, их очень много.
9 Ly_Alena
 
08.12.14
06:45
(7) никогда бы не подумала что фотка может мне помочь )
10 wertyu
 
08.12.14
06:45
(0) >>> Из документа КоммерческийПроект пишутся данные в регистр сведений ЦеныНомерклатуры

вот это всё безобразие прямо в документе?
11 Redkiy
 
08.12.14
06:46
сразу в запросе увидел деление на 0
/ (ЕСТЬNULL(ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.КоличествоОстаток, 0)
12 wertyu
 
08.12.14
06:46
(9) очень помогла, мне прямо захотелось в Караганду
13 Ly_Alena
 
08.12.14
06:47
(10) Нет, для расчета плановой там еще регистр накоплений и регистр сведений. в запросе написано.
14 wertyu
 
08.12.14
06:47
(13) это обработка?
15 Ly_Alena
 
08.12.14
06:48
(14) нет
16 Ly_Alena
 
08.12.14
06:48
Если не иметь ввиду Процедура ОбработкаПроведения (14)
17 Godofsin
 
08.12.14
06:50
Если Выборка.ДополнительноеОписаниеНоменклатуры="" Тогда
                    Возврат;
                Иначе
                    ПроцедураПроверка();
                КонецЕсли;


Выполнение условия выкинет тебя из процедуры сразу, проигнорировав остальную выборку.
18 Ly_Alena
 
08.12.14
06:51
Сейчас я приведу пример - чтоб было понятно:
Стал ПЭ 0,05 х 24,5
Краска порошковая RAL 7035 шагрень, глянцевая
Краска порошковая RAL 5012 шагрень, глянцевая

В регистр ценыноменклатуры пишется:
Стал ПЭ 0,05 х 24,5
Краска порошковая RAL 7035 шагрень, глянцевая
Краска порошковая RAL 5012 шагрень, глянцевая
Стал ПЭ (для спецификации)
19 Ly_Alena
 
08.12.14
06:51
(17) да уже заметила. Это все гадание на кофейной гуще - по всякому пробовала и в разные места ставила - сейчас вижу что не попадает
20 wertyu
 
08.12.14
06:51
(16) давай уберём просто Документ из запроса, потом в делителях у ЕСТЬNULL заменим нули на единицы
21 Godofsin
 
08.12.14
06:52
Справочники.Номенклатура.НайтиПоКоду("Н00032926") - подобное тоже мне не нравится, но смириться можно.
22 Ly_Alena
 
08.12.14
06:52
(21) это как раз для спецификации запись
23 Godofsin
 
08.12.14
06:53
(19) Ибо "Возврат" нужно заменить на "Продолжить".
24 Ly_Alena
 
08.12.14
06:53
(20) Из документа КомПроект берется дата документа
25 Ly_Alena
 
08.12.14
06:54
(20) или вы имеете ввиду второй запрос?
26 Godofsin
 
08.12.14
06:55
(22) Я к тому, что кто-нибудь изменит код у позиции и весь твой алгоритм будет работать неправильно. А заметишь уже похдно.
27 SeraFim
 
08.12.14
06:55
(18) так а "Стал ПЭ (для спецификации)" это кто такое? Уже существующий элемент справочника "Номенклатура"?

Судя по коду, сейчас 2 раза пишется "Стал ПЭ 0,05 х 24,5 ", из-за этого и ошибка.
Где-то "Стал ПЭ 0,05 х 24,5 " должно измениться на "Стал ПЭ (для спецификации)"
28 wertyu
 
08.12.14
06:56
(24) там уже есть эта таблица, когда упоминается ТЧ
29 SeraFim
 
08.12.14
06:57
(27) а, тьфу.. запутался уже
30 SeraFim
 
08.12.14
06:57
ДополнительноеОписаниеНоменклатуры - это что? Строка? Или ссылка на номенклатуру?
31 Ly_Alena
 
08.12.14
06:58
(27) нет стал пэ не должно меняться. Должно выводиться
Стал ПЭ 0,05 х 24,5
и
Стал ПЭ (для спецификации)
Это делается для того что некоторые  стал пэ используются для расчета плановой, которые используются в готовой продукции(для спецификации), а какие-то расчитываются для использования расчета плановой себестоимости изделия.
32 wertyu
 
08.12.14
06:59
(25) потом все коды, надо заменить на параметры запроса (30) это неограниченная строка )
33 Ly_Alena
 
08.12.14
06:59
(30) Это как раз - если в доп описании Номенклатуры есть что-то в данном случаае "Стал ПЭ", то он записывает номенклатуру Стал ПЭ (для спецификации)
34 Ly_Alena
 
08.12.14
07:01
(27) Стал ПЭ - уже существующий элемент справочника
35 Ly_Alena
 
08.12.14
07:03
То есть примерно я вижу это так - наверное должен быть еще некий третий простой запрос - в котором он будет выбирать номенклатуру с одинаковым доп описанием - объединять и выводить одну строку Стал ПЭ (для спецификации) в данном случае.
36 wertyu
 
08.12.14
07:03
(33) ВЫБОР КОГДА можно использовать без ИНАЧЕ:
ВЫБОР КОГДА 1 = 1 ТОГДА ИСТИНА
КОГДА 2 = 2 ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ КОНЕЦ
37 wertyu
 
08.12.14
07:04
(35) ЦеныНоменклатурыСрезПоследних.ТипЦен.Код = ""000000008"") - это тоже в параметр и в условие виртуальной таблицы
38 Ly_Alena
 
08.12.14
07:04
(36) не поняла
39 Godofsin
 
08.12.14
07:04
(33) Давай итог: ты перебираешь номенклатуру и находишь там что-то в описании. Далее по коду ты подставляешь в запись РС левую номенклатуру, которую определяешь как Справочники.Номенклатура.НайтиПоКоду("Н00032926")?
40 Ly_Alena
 
08.12.14
07:05
(37) выводится - плановая для расчета
41 Godofsin
 
08.12.14
07:05
Короче, это слишком сильно для понедельника, у меня мозг ломается ((((
42 wertyu
 
08.12.14
07:06
(40) это несущественно, в параметр запроса надо поместить, а в запросе перенести в параметры таблицы
43 wertyu
 
08.12.14
07:08
(39) нет, для неё нет записи
44 wertyu
 
08.12.14
07:10
(40) НЕ Условие1 ИЛИ Условие2 ИЛИ Условие3 работает так:
НЕ срабатывает только на первое условие, а вот если все ИЛИ заключить в скобки
45 Ly_Alena
 
08.12.14
07:10
(39) Перебираю - вывожу всю номенклатуру что есть - считаю для нее плановую для расчета, далее если в описании хоть одной номенклатуры есть доп описание - то вывожу ДОПОЛНИТЕЛЬНО номенклатуру (для спецификации)
46 Ly_Alena
 
08.12.14
07:11
(44) Давайте уточним сперва о каком запросе идет речь - первый (который вводит всю номенклатуру) или о втором (который выводит номенклатуру для спецификации)?
47 wertyu
 
08.12.14
07:12
(8) переменная Выборка в процедуре ПроцедураПроверка() не определена
48 Ly_Alena
 
08.12.14
07:12
(47) Выборка2
49 wertyu
 
08.12.14
07:13
(46) Если НЕ Выборка.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("Н00032926") ИЛИ Выборка.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("Н00025901") ИЛИ Выборка.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("Н00026343") ИЛИ Выборка.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("Н00026063") ИЛИ Выборка.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("Н00026141") ИЛИ Выборка.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("Н00016958") Тогда
50 wertyu
 
08.12.14
07:13
(48) да, её можно назвать просто Выборка
51 Ly_Alena
 
08.12.14
07:14
(50) я понимаю и объяснила почему мне удобно использовать выборка2. Думаю это не суть
52 wertyu
 
08.12.14
07:15
теперь про саму запись, сколько таких документов в дёнь? у этого регистра ЦеныНоменклатуры периодичность день
53 Ly_Alena
 
08.12.14
07:17
(52) Периодичность в секундах - обращаются в день оооочень часто
54 Ly_Alena
 
08.12.14
07:18
(49) Это проверка на номенклатуру - новое наименование, помеченнаое на удаление, различия в спецификации - готовая продукция, закупленная и так далее
55 Redkiy
 
08.12.14
07:20
я бы сначала временные таблицы номенклатуры без дублей, а потом уже вычислял цену каждой позиции, для примера:
ВЫБРАТЬ РАЗЛИЧНЫЕ
    ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура
ПОМЕСТИТЬ ТЗ_Номенклатура
ИЗ
    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
ГДЕ
    ПоступлениеТоваровУслугТовары.Ссылка = &Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    РеализацияТоваровУслугТовары.Номенклатура.ДополнительноеОписаниеНоменклатуры КАК НоменклатураДляСпецификации
ПОМЕСТИТЬ ТЗ_Спецификация
ИЗ
    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ГДЕ
    РеализацияТоваровУслугТовары.Ссылка = &Ссылка

(0) скажи а в чем тайный смысл условия ДатыДокумента если есть условие на его Ссылку?
                   |ГДЕ
                   |    КоммерческийПроект.Ссылка = &Ссылка
                   |    И КоммерческийПроектТовары.ЗаявкаНаЗакуп = ЗНАЧЕНИЕ(Документ.ЗаявкаНаЗакуп.ПустаяСсылка)
                   |    И КоммерческийПроект.Дата = &Дата
56 wertyu
 
08.12.14
07:23
(53) ты делаешь записи вне зависимости от запроса, у тебя там везде найти по коду
(54) ещё раз, это условие будет истиной, если номенклатура иммет коды: Н00025901, Н00026343, Н00026063, Н00026141, Н00016958, но самое главное, что оно будет всегда выполняться, если номенклатура не имеет код Н00032926
57 wertyu
 
08.12.14
07:24
иммет = имеет*
58 wertyu
 
08.12.14
07:31
сделай уже какую-нибудь настройку, в которой явно можно указать все эти элементы,вместо этих найти по коду
и убери предупреждение из модуля, так нельзя делать
59 wertyu
 
08.12.14
07:33
+(58) нельзя в модуле использовать модальные окна: Предупреждение, Вопрос и т.п.
60 Ly_Alena
 
08.12.14
07:44
(56) Как это я делаю записи независимо от запроса? Вы меня совсем запутали
61 Ly_Alena
 
08.12.14
07:46
(56) Это условие на коды - если номенклатура не - новое наименование и не помечено на удаления (по категориям прочие материалы, готовая продукция и так далее) - то пишем в регистр, если что-то из перечисленного то не пишем.
62 Ly_Alena
 
08.12.14
07:46
(59) Не знала что нельзя.
63 Ly_Alena
 
08.12.14
07:49
(55) Нет тайного смысла у датыДокумента. Я потом проверяю чтобы остатки по партиям и цены номенклатуры были не поздее даты документа.конечно можно использовать ссылку.
64 Ly_Alena
 
08.12.14
07:51
Я все же я не пойму для чего мне временные таблицы...суть проблемы ведь не в этом.
65 wertyu
 
08.12.14
07:54
(60) фактически запрос сам по себе, а записи сами по себе, единственное чем управляет запрос - это количество записей, расскажи, какое практическое назначение у документа КоммерческийПроект?
(61) я насписал как оно на самом деле работает, могу предложить взять все условия после НЕ в скобки, НЕ выполняется в первую очередь
66 wertyu
 
08.12.14
07:55
(55) я бы ещё так сделал:
ВЫРАЗИТЬ(РеализацияТоваровУслугТовары.Номенклатура.ДополнительноеОписаниеНоменклатуры КАК НоменклатураДляСпецификации, 1000)
67 Ly_Alena
 
08.12.14
07:55
Мне бы хотелось все же обойтись без этого - объясню почему.
Запросов подобных второму - наверное около 30-40 может и больше и все построены по одному принципу - разница только в условии "ПОДОБНО" и в движение.номенклатура - разные по коду. И как-то страшно представить что придется это все переделывать в корне.
68 wertyu
 
08.12.14
07:55
ВЫРАЗИТЬ(РеализацияТоваровУслугТовары.Номенклатура.ДополнительноеОписаниеНоменклатуры, 1000) КАК НоменклатураДляСпецификации

промах )
69 wertyu
 
08.12.14
07:56
(67) это надо переделать
70 Ly_Alena
 
08.12.14
07:57
(65) Да они у меня в скобках были - и видимо что-то нахимичила уже, пока сто раз все меняла. Документ ком-проект я уже убрала из запроса.
71 Ly_Alena
 
08.12.14
07:59
(69) Эх... Переделываем второй запрос, который в процедуре ПроцедураПроверки()?
72 Ly_Alena
 
08.12.14
07:59
Еще бы понять для чего переделать нужно...
73 wertyu
 
08.12.14
08:00
(70) это бессмысленно явно указывать что-то в коде, всё подобное надо выносить в настройки и из них брать, ты потом даже сама не резберёшься, то что ты написала очень сложно воспринимается, стоит забыть и работы на несколько дней обеспечено
74 Ly_Alena
 
08.12.14
08:03
(73) Если бы несколько дней...
Я сейчас переделаю только один запрос связанный со стал пэ. И я никогда не работала с временными таблицами - поэтому это займет какое-то время...
75 wertyu
 
08.12.14
08:07
(74) что тебе надо сделать:
1. переделать запрос на читаемый, ты сама когда переделаешь будешь рада
2. все эти условия в выборке внести в запрос
3. сделать настройку, тут куча вариантов, рекомендую независимый регистр с перечислением
76 Redkiy
 
08.12.14
08:14
(69) тут вообще нужно сделать Ctrl+A Del
1. Создай временную таблицу номенклатуры по документу
2. Присоедини к полученной ТЗ цены из ЦеныНоменклатуры, тип цен в параметры виртуальной таблицы, само значение в параметры Запроса!!! (где дата среза)
3. Присоедини к полученной ТЗ остатки по нужной номенклатуре и складу из ПартииТоваровНаСкладахБухгалтерскийУчетОстатки. Условие на выборку в параметры вирт. таблицы.
4. убирай из кода запроса конструкции типа КоммерческийПроект.Контрагент.Код = ""о05880"" Глаз режет. Признак контрагента вынеси в параметр Запроса, например числом (0-все, 1,2,..)
Пока все, но это только начало...
77 Redkiy
 
08.12.14
08:26
(76) + по п.4 не верно, сорри. Для каждого контр. создай параметр запроса
78 Redkiy
 
08.12.14
08:28
(76) ++ и для лучшего понимания Запросов советую просмотреть видео от Павла Чистова, многое сразу прояснится
79 Ly_Alena
 
08.12.14
08:31
(78) Спасибо! Надолго видимо засяду.
80 Redkiy
 
08.12.14
08:38
(79) Тяжело в учении, легко в бою (с)
Мы же тебе нарисуем запрос легко, но хочется чтобы ТС понял как это все работает.
Наводку дали... , будут вопросы - пиши, с радостью ответим.
Насчет фотки - без нее тема превращается в пустой флуд страниц на 10.
81 Ly_Alena
 
08.12.14
08:49
(20) Блин, говорю же запутали! Документ ком проект нужен для расчета плановой
82 wertyu
 
08.12.14
09:29
(79) лучше день потерять, потом за пять минут долететь (ч)
83 Ly_Alena
 
08.12.14
11:08
Совсем запуталась... В общем вот что натворила:
ВЫБРАТЬ РАЗЛИЧНЫЕ
    |    КоммерческийПроектТовары.Номенклатура КАК Номенклатура,
    |    КоммерческийПроектТовары.ЕдиницаИзмерения,
    |    КоммерческийПроектТовары.Валюта,
    |    ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.Номенклатура.ДополнительноеОписаниеНоменклатуры,
    |    ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.КоличествоОстаток,
    |    ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.СтоимостьОстаток,
    |    ЦеныНоменклатурыСрезПоследних.Цена,
    |    ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения КАК ЕдиницаИзмерения1
    |ПОМЕСТИТЬ ТЗ_Номенклатура
    |ИЗ
    |    Документ.КоммерческийПроект.Товары КАК КоммерческийПроектТовары,
    |    РегистрНакопления.ПартииТоваровНаСкладахБухгалтерскийУчет.Остатки(&Дата, ) КАК ПартииТоваровНаСкладахБухгалтерскийУчетОстатки,
    |    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ) КАК ЦеныНоменклатурыСрезПоследних
    |ГДЕ
    |    КоммерческийПроектТовары.Ссылка = &Ссылка
    |    И КоммерческийПроектТовары.Номенклатура.Код = ""Н00037304""
    |    И ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.Номенклатура.Код = ""Н00037304""
    |    И ЦеныНоменклатурыСрезПоследних.ТипЦен.Код = ""000000008""
    |    И КоммерческийПроектТовары.Номенклатура.БазоваяЕдиницаИзмерения.Наименование = ""кг""
    |    И КоммерческийПроектТовары.Валюта.Код = ""398""
    |
    |СГРУППИРОВАТЬ ПО
    |    КоммерческийПроектТовары.Номенклатура,
    |    КоммерческийПроектТовары.ЕдиницаИзмерения,
    |    КоммерческийПроектТовары.Валюта,
    |    ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.Номенклатура.ДополнительноеОписаниеНоменклатуры,
    |    ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.КоличествоОстаток,
    |    ПартииТоваровНаСкладахБухгалтерскийУчетОстатки.СтоимостьОстаток,
    |    ЦеныНоменклатурыСрезПоследних.Цена,
    |    ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ РАЗЛИЧНЫЕ
    |    КоммерческийПроектТовары.Номенклатура.ДополнительноеОписаниеНоменклатуры КАК ДополнительноеОписаниеНоменклатуры
    |ПОМЕСТИТЬ ТЗ_Спецификация
    |ИЗ
    |    Документ.КоммерческийПроект.Товары КАК КоммерческийПроектТовары
    |ГДЕ
    |    КоммерческийПроектТовары.Ссылка = &Ссылка

Как дальше сообразить не могу...
84 Ly_Alena
 
08.12.14
11:26
А вообще мне сказали - сделать чтобы работало в том виде, в котором есть - а потом красоту наводить...(
85 wertyu
 
08.12.14
11:27
(84) не слушай их, это не красота, а необходимость
86 wertyu
 
08.12.14
11:28
(83) почитай что-нибудь про соединения
87 Redkiy
 
08.12.14
11:38
(83) Про консоль запросов слышала? Отработай свой запрос на реальном примере, посмотри что получилось. В первом запросе у тебя выбираются данные из 3 таблиц, каждая запись с каждой!!! Где соединения?
88 Ly_Alena
 
08.12.14
11:45
(87) Про консоль слышала, но пользоваться не умею.
89 wertyu
 
08.12.14
11:50
(88) это очень просто, попробуй
90 Redkiy
 
08.12.14
11:56
(88) Какой ужас!!! Как же ты запросы сочиняешь? Боюсь даже представить... Срочно, первым делом изучить возможности консоли, потом запрос пилить будем.
http://1c.chistov.pro/2009/06/blog-post.html
91 Ly_Alena
 
08.12.14
13:57
(90) Набегами! ) И не только запросы...
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший