Имя: Пароль:
1C
1С v8
Автоматическое создание документа Установка цен номенклатуры контрагентов
0 MAnastasia
 
01.02.13
12:00
Ребята, помогите пожалуйста. При нажатии кнопки автоматически создаю документ Установка цен номенклатуры контрагентов. Туда попадают все виды  цен контрагентов. А мне надо определенного. Не могу справиться с отбором по контрагенту.
ДокументОбъект = Документы.УстановкаЦенНоменклатурыКонтрагентов.СоздатьДокумент();
       ДокументОбъект.Дата = Дата;
       ДокументОбъект.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию("ЗЗЗ");
       Контрагент = ДокументОбъект.Контрагент;
       ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(ДокументОбъект);
       ДокументОбъект.Комментарий = "Документ создан автоматически";
       ИндексСтрокиТаблицыЦен = 0;
           Для Каждого ТипЦенНоменклатуры Из мЦеныНоменклатуры Цикл
           СтрокаТипЦен = ДокументОбъект.ТипыЦен.Найти(ТипЦенНоменклатуры.ТипЦен, "ТипЦен");
           
           Если СтрокаТипЦен = Неопределено Тогда
               СтрокаТипЦен = ДокументОбъект.ТипыЦен.Добавить();
               СтрокаТипЦен.ТипЦен = ТипЦенНоменклатуры.ТипЦен;
           КонецЕсли;
           СтруктураПоиска = Новый Структура;
           СтруктураПоиска.Вставить("Номенклатура", НоменклатураОбъект.Ссылка);
           СтруктураПоиска.Вставить("ХарактеристикаНоменклатуры", Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка());
           СтруктураПоиска.Вставить("ТипЦен", ТипЦенНоменклатуры.ТипЦен);
           
           СтрокаТовары = ОбработкаТабличныхЧастей.НайтиСтрокуТабЧасти(ДокументОбъект.Товары, СтруктураПоиска);
           
           Если СтрокаТовары = Неопределено Тогда
               СтрокаТовары = ДокументОбъект.Товары.Добавить();
               СтрокаТовары.Номенклатура = НоменклатураОбъект.Ссылка;
               СтрокаТовары.ТипЦен = ТипЦенНоменклатуры.ТипЦен;
               СтрокаТовары.ИндексСтрокиТаблицыЦен = ИндексСтрокиТаблицыЦен;
           КонецЕсли;
           
           СтрокаТовары.Цена = ТипЦенНоменклатуры.Цена;
           СтрокаТовары.Валюта = ТипЦенНоменклатуры.Валюта;
           СтрокаТовары.ЕдиницаИзмерения = ТипЦенНоменклатуры.ЕдиницаИзмерения;;
       КонецЦикла;
1 cw014
 
01.02.13
12:01
Контрагент = ДокументОбъект.Контрагент;

А это накуя?
2 cw014
 
01.02.13
12:01
И чего ты вообще хочешь сделать?
3 cw014
 
01.02.13
12:02
Где у тебя заполнение ТЧ "ТипыЦен"???
4 cw014
 
01.02.13
12:02
И где вообще у тебя фотка?
5 cw014
 
01.02.13
12:03
ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(ДокументОбъект);

Нафиг выкидывай. 5 реквизитов можно и руками заполнить - быстрее чем целую функцию прогонять
6 cw014
 
01.02.13
12:04
Для Каждого ТипЦенНоменклатуры Из мЦеныНоменклатуры Цикл


Что у тебя в переменной "мЦеныНоменклатуры"???
7 cw014
 
01.02.13
12:04
И вообще, какого ... я тут сам с собой разговариваю?
8 Галахад
 
гуру
01.02.13
12:06
(7) :-)
9 cw014
 
01.02.13
12:06
(8) ОООО!!!! Собеседник, УРА!!!!
10 MAnastasia
 
01.02.13
12:09
мЦеныНоменклатуры = Новый Соответствие;
           
           Запрос = Новый Запрос("ВЫБРАТЬ РАЗРЕШЕННЫЕ
           |    ТипыЦенНоменклатурыКонтрагентов.Наименование,
           |    ТипыЦенНоменклатурыКонтрагентов.ВалютаЦены  КАК Валюта,
           |    ТипыЦенНоменклатурыКонтрагентов.Владелец КАК Контрагент,
           |    ТипыЦенНоменклатурыКонтрагентов.ТипЦеныНоменклатуры,
           |    ТипыЦенНоменклатурыКонтрагентов.Ссылка КАК ТипЦен
           |ИЗ
           |    Справочник.ТипыЦенНоменклатурыКонтрагентов КАК ТипыЦенНоменклатурыКонтрагентов");
           
           
           мЦеныНоменклатуры = Запрос.Выполнить().Выгрузить();
           мЦеныНоменклатуры.Колонки.Добавить("Цена");
           мЦеныНоменклатуры.Колонки.Добавить("ЕдиницаИзмерения");
           //мЦеныНоменклатуры.ВыбратьСтроку(
           Для Каждого мСтрока из мЦеныНоменклатуры Цикл
               //мСтрока.Контрагент = Шашка.ОсновнойПоставщик;
               мСтрока.Цена = ЦенаЛицензииИтог;
               мСтрока.ЕдиницаИзмерения = НоменклатураОбъект.ЕдиницаХраненияОстатков;
           КонецЦикла;
           
           СоздатьДокументУстановкаЦенНоменклатуры(мЦеныНоменклатуры);
           Сообщить("Создан документ Установка цен номенклатуры контрагентов");
11 MAnastasia
 
01.02.13
12:12
cw014, сорри, не ожидала быстрого ответа)
12 cw014
 
01.02.13
12:12
ДокументОбъект = Документы.УстановкаЦенНоменклатурыКонтрагентов.СоздатьДокумент();
       ДокументОбъект.Дата = Дата;
       ДокументОбъект.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию("ЗЗЗ");
       ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(ДокументОбъект);
       ДокументОбъект.Комментарий = "Документ создан автоматически";
       ИндексСтрокиТаблицыЦен = 0;
       СтрокиПоТекущемуКонтрагенту = мЦеныНоменклатуры.НайтиСтроки(Новый Структура("Контрагент", ДокументОбъект.Контрагент);
           Для Каждого ТипЦенНоменклатуры Из СтрокиПоТекущемуКонтрагенту Цикл
           СтрокаТипЦен = ДокументОбъект.ТипыЦен.Найти(ТипЦенНоменклатуры.ТипЦен, "ТипЦен");
           
           Если СтрокаТипЦен = Неопределено Тогда
               СтрокаТипЦен = ДокументОбъект.ТипыЦен.Добавить();
               СтрокаТипЦен.ТипЦен = ТипЦенНоменклатуры.ТипЦен;
           КонецЕсли;
           СтруктураПоиска = Новый Структура;
           СтруктураПоиска.Вставить("Номенклатура", НоменклатураОбъект.Ссылка);
           СтруктураПоиска.Вставить("ХарактеристикаНоменклатуры", Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка());
           СтруктураПоиска.Вставить("ТипЦен", ТипЦенНоменклатуры.ТипЦен);
           
           СтрокаТовары = ОбработкаТабличныхЧастей.НайтиСтрокуТабЧасти(ДокументОбъект.Товары, СтруктураПоиска);
           
           Если СтрокаТовары = Неопределено Тогда
               СтрокаТовары = ДокументОбъект.Товары.Добавить();
               СтрокаТовары.Номенклатура = НоменклатураОбъект.Ссылка;
               СтрокаТовары.ТипЦен = ТипЦенНоменклатуры.ТипЦен;
               СтрокаТовары.ИндексСтрокиТаблицыЦен = ИндексСтрокиТаблицыЦен;
           КонецЕсли;
           
           СтрокаТовары.Цена = ТипЦенНоменклатуры.Цена;
           СтрокаТовары.Валюта = ТипЦенНоменклатуры.Валюта;
           СтрокаТовары.ЕдиницаИзмерения = ТипЦенНоменклатуры.ЕдиницаИзмерения;;
       КонецЦикла;
13 cw014
 
01.02.13
12:13
Весь хлам не переписывал - лень
14 cw014
 
01.02.13
12:13
И не взлетит, у тебя переменная "ИндексСтрокиТаблицыЦен" везде = 0
15 MAnastasia
 
01.02.13
12:15
пробую
16 MAnastasia
 
01.02.13
12:16
а что изменить еще надо?индекс пересчитывать?
17 cw014
 
01.02.13
12:17
ДокументОбъект = Документы.УстановкаЦенНоменклатурыКонтрагентов.СоздатьДокумент();
ДокументОбъект.Дата = Дата;
ДокументОбъект.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию("ЗЗЗ");

ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(ДокументОбъект);
ДокументОбъект.Комментарий = "Документ создан автоматически";
ИндексСтрокиТаблицыЦен = 0;

СтрокиПоТекущемуКонтрагенту = мЦеныНоменклатуры.Скопировать(Новый Структура("Контрагент", ДокументОбъект.Контрагент);

ДокументОбъект.ТипыЦен.Загрузить(СтрокиПоТекущемуКонтрагенту);

Для Каждого ТипЦен ИЗ СтрокиПоТекущемуКонтрагенту Цикл
   ИндексСтрокиТаблицыЦен = ИндексСтрокиТаблицыЦен + 1;
   СтрокаТовары = ДокументОбъект.Товары.Добавить();
   СтрокаТовары.Номенклатура = НоменклатураОбъект.Ссылка;
   СтрокаТовары.ТипЦен = ТипЦенНоменклатуры.ТипЦен;
   СтрокаТовары.ИндексСтрокиТаблицыЦен = ИндексСтрокиТаблицыЦен;
   СтрокаТовары.Цена = ТипЦенНоменклатуры.Цена;
   СтрокаТовары.Валюта = ТипЦенНоменклатуры.Валюта;
   СтрокаТовары.ЕдиницаИзмерения = ТипЦенНоменклатуры.ЕдиницаИзмерения;;
КонецЦикла;
18 cw014
 
01.02.13
12:17
СтрокиПоТекущемуКонтрагенту = мЦеныНоменклатуры.Скопировать(Новый Структура("Контрагент", ДокументОбъект.Контрагент));
19 cw014
 
01.02.13
12:17
Скобку забыл
20 cw014
 
01.02.13
12:18
СтрокаТовары.ТипЦен = ТипЦен.ТипЦен;
   СтрокаТовары.ИндексСтрокиТаблицыЦен = ИндексСтрокиТаблицыЦен;
   СтрокаТовары.Цена = ТипЦен.Цена;
   СтрокаТовары.Валюта = ТипЦен.Валюта;
   СтрокаТовары.ЕдиницаИзмерения = ТипЦен.ЕдиницаИзмерения;;
21 cw014
 
01.02.13
12:18
ТипЦенНоменклатуры - неопределенное значение
22 MAnastasia
 
01.02.13
12:23
СПАСИБО БОЛЬШОЕ ТЕБЕ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
23 MAnastasia
 
01.02.13
12:24
Все заработало наконец то!!!!!!!!!!!!!!!!!!!!!!!!СПАСИБО!!!!
24 cw014
 
01.02.13
12:25
Не игнорируем (4)
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.