Имя: Пароль:
1C
1С v8
Перенос из одной ТЧ в другую (обработка)
0 WhiteDragon93
 
15.05.13
22:38
Пишу обработку для заполнения ТЧ документа ТЧ другого документа (точнее ее частью). Документ-основание - оприходование товаров, документ-приемник - установка цен номенклатуры. Конфа - Комплексная автоматизация.
Я уже совсем затупил и готов получить за свою тупость :)

Вот код:

Процедура КнопкаВыполнитьНажатие(Кнопка)

ДокументОснование = ЭтаФорма.ДокументОснование;
ДокументОбъект = ЭтаФорма.ДокументОбъект;
ТЧОбъекта = ДокументОбъект.Товары;
   
Для каждого Стр Из ДокументОснование.Товары Цикл

НоваяСтрока = ТЧОбъекта.Добавить();
НоваяСтрока.Номенклатура = Стр.Номенклатура;
НоваяСтрока.НомерСтроки = Стр.НомерСтроки;

КонецЦикла;

ЭтаФорма.Закрыть();

КонецПроцедуры
1 zak555
 
15.05.13
22:42
из кода видно, что ты пытаешь скопировать ТЧ основание в документ
2 WhiteDragon93
 
15.05.13
22:46
(1) тяжко без отладчика начинающему
3 ШишкинЛес
 
15.05.13
22:46
ОбъектДок = ДокументОбъект.ПолучитьОбъект();
НоваяСтрока = ОбъектДок.Товары.Добавить();
4 Живой Ископаемый
 
15.05.13
22:51
2(2) как это? куда дел отладчик? или силу воли воспитываешь?
5 WhiteDragon93
 
15.05.13
22:56
(4) это внешняя зарегистрированная обработка
6 Dionis Sergeevich
 
15.05.13
22:58
(5) Сделай форму, открой ее не через внешние обработки и отлаживай =)

Да, и Документ в коде не записан
7 WhiteDragon93
 
15.05.13
23:00
(6) он записывается при вызове обработки)
8 WhiteDragon93
 
15.05.13
23:04
Вот что за дела?

Модуль объекта:

Перем ДокументОбъект Экспорт;
   
Процедура Инициализировать(Объект,ИмяТабличнойЧасти,ТабличноеПолеОбъекта) Экспорт
   
   ДокументОбъект = Объект;
   ТЧДокумента = Объект["Товары"];
   ТПДокумента = ТабличноеПолеОбъекта;
   
   Форма = ПолучитьФорму("Основная");
   Форма.Открыть();
   
КонецПроцедуры


Модуль формы:

Процедура КнопкаВыполнитьНажатие(Кнопка)

ДокументОснование = ЭтаФорма.ДокументОснование;
ДокОбъект = ДокументОбъект.Ссылка.Получить();
ТЧОбъекта = ДокОбъект.Товары;
   
Для каждого Стр Из ДокументОснование.Товары Цикл

НоваяСтрока = ТЧОбъекта.Добавить();
НоваяСтрока.Номенклатура = Стр.Номенклатура;
НоваяСтрока.НомерСтроки = Стр.НомерСтроки;

КонецЦикла;

ЭтаФорма.Закрыть();

КонецПроцедуры
9 Dionis Sergeevich
 
15.05.13
23:08
В ссылку пишешь. Говорили же - объект получи
10 WhiteDragon93
 
15.05.13
23:09
(9) {Форма.Основная.Форма(5)}: Метод объекта не обнаружен (Получить)
ДокОбъект = ДокументОбъект.Ссылка.Получить();
11 Dionis Sergeevich
 
15.05.13
23:10
ОбъектДок = ДокументОбъект.ПолучитьОбъект();
12 WhiteDragon93
 
15.05.13
23:14
(11)
{Форма.Основная.Форма(5)}: Ошибка при вызове метода контекста (ПолучитьОбъект)
ДокОбъект = ДокументОбъект.ПолучитьОбъект();
по причине:
Элемент не выбран!
13 Dionis Sergeevich
 
15.05.13
23:15
ДокументОбъект у тебя полеввода? Так и вводи туда документ =)
14 Dionis Sergeevich
 
15.05.13
23:15
Ладно, кидай обработку - гляну
15 WhiteDragon93
 
15.05.13
23:17
16 Dionis Sergeevich
 
15.05.13
23:38
ДокументОснование = ЭтаФорма.ЭлементыФормы.пДокументОснование.Значение;
   ДокОбъект = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
   ДокОбъект.Дата = ТекущаяДата();
   ДокОбъект.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Розничная");
   ТЧОбъекта = ДокОбъект.Товары;
       
   Для каждого Стр Из ДокументОснование.Товары Цикл

       НоваяСтрока = ТЧОбъекта.Добавить();
       НоваяСтрока.Номенклатура = Стр.Номенклатура;
       //НоваяСтрока.НомерСтроки = Стр.НомерСтроки;
       НоваяСтрока.Цена = Стр.Цена;
       

   КонецЦикла;

   ДокОбъект.Записать();
   ФормаНовогоДокумента = ДокОбъект.ПолучитьФорму("ФормаДокумента");
   ФормаНовогоДокумента.Открыть();
   
   ЭтаФорма.Закрыть();
17 Dionis Sergeevich
 
15.05.13
23:38
И поубивай реквизиты формы.

Велком, че -_-
18 WhiteDragon93
 
15.05.13
23:45
(17) с ценой не прокатит, фирма и закупочную цену вводит :) спасибо большое, сейчас попробую
19 WhiteDragon93
 
15.05.13
23:52
(17) у меня как всегда, то ли лыжи не едут, то ли...

если убрать все, связанное с ценой - "документ записан не корректно"

если оставить как есть - {Форма.Основная.Форма(7)}: Поле объекта не обнаружено (ТипЦен)
   ДокОбъект.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Розничная");
20 Dionis Sergeevich
 
15.05.13
23:55
Комплексной под рукой нету. Посмотри документ Установка цен номенклатуры - там должен быть реквизит ТипЦен
21 Dionis Sergeevich
 
15.05.13
23:56
Может он там называется "ТипыЦен" или еще как
22 WhiteDragon93
 
16.05.13
00:00
(21) мне по сути нужно только номенклатуру в установку цен перенести, цену сами введут
23 hhhh
 
16.05.13
00:00
он в табличной части. во всех конфах.
24 Dionis Sergeevich
 
16.05.13
00:01
(22) Убирай тогда строку "НоваяСтрока.Цена = Стр.Цена;"

Но тип цен нужно будет указать
25 Dionis Sergeevich
 
16.05.13
00:03
26 WhiteDragon93
 
16.05.13
00:03
(23) нет его в ТЧ, там есть список типов цен, при выборе которых (например 2: Розничная и Закупочная) создаются две колонки (соответственно, тоже 2)
27 hhhh
 
16.05.13
00:04
(22) Для каждого Стр Из ДокументОснование.Товары Цикл

       НоваяСтрока = ТЧОбъекта.Добавить();
       НоваяСтрока.Номенклатура = Стр.Номенклатура;
 
       НоваяСтрока.ТипЦен = Розничные;
       
       НоваяСтрока = ТЧОбъекта.Добавить();
       НоваяСтрока.Номенклатура = Стр.Номенклатура;
 
       НоваяСтрока.ТипЦен = Закупочные;

     НоваяСтрока = ТЧОбъекта.Добавить();
       НоваяСтрока.Номенклатура = Стр.Номенклатура;
 
       НоваяСтрока.ТипЦен = Оптовые;

   КонецЦикла;
28 hhhh
 
16.05.13
00:04
(26) есть, глаза разуй.
29 Dionis Sergeevich
 
16.05.13
00:05
+(25) БП 2.0.37.8
30 WhiteDragon93
 
16.05.13
00:07
(26) он есть, но что, если выбирается 2 типа цен?

http://s018.radikal.ru/i524/1305/4a/eafdbc0c49df.jpg
31 Dionis Sergeevich
 
16.05.13
00:07
(30) -> (27)
32 Mashinist
 
16.05.13
00:11
(31) то в ТЧ будет две строки с одним товаром, но с разными типами цен и разной ценой соответсвенно
33 Mashinist
 
16.05.13
00:12
тьху (32) -> (30)
34 WhiteDragon93
 
16.05.13
00:16
(33) а проведется документ, если будет дублироваться номенклатура и у каждой не будет по одному типу?

http://s45.radikal.ru/i110/1305/51/ab3beda45f4e.jpg
35 Dionis Sergeevich
 
16.05.13
00:18
(34) будет как в (19) если не введешь тип цены
36 WhiteDragon93
 
16.05.13
00:19
ДокументОснование = ЭтаФорма.ЭлементыФормы.пДокументОснование.Значение;
   ДокОбъект = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
   ДокОбъект.Дата = ТекущаяДата();
   Розничные = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Розничная");
   Закупочные = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Закупочная");
   ТЧОбъекта = ДокОбъект.Товары;
       
   Для каждого Стр Из ДокументОснование.Товары Цикл

       НоваяСтрока = ТЧОбъекта.Добавить();
       НоваяСтрока.Номенклатура = Стр.Номенклатура;
 
       НоваяСтрока.ТипЦен = Розничные;
       
       НоваяСтрока = ТЧОбъекта.Добавить();
       НоваяСтрока.Номенклатура = Стр.Номенклатура;
 
       НоваяСтрока.ТипЦен = Закупочные;

  //   НоваяСтрока = ТЧОбъекта.Добавить();
  //     НоваяСтрока.Номенклатура = Стр.Номенклатура;
  //
  //     НоваяСтрока.ТипЦен = Оптовые;

   КонецЦикла;

   ДокОбъект.Записать();
   ФормаНовогоДокумента = ДокОбъект.ПолучитьФорму("ФормаДокумента");
   ФормаНовогоДокумента.Открыть();
   
   ЭтаФорма.Закрыть();


Документ Установка цен номенклатуры 00000000011 от 16.05.2013 0:18:24 был записан некорректно! Информация о ценах очищена.
37 Dionis Sergeevich
 
16.05.13
00:23
Смотри обязательные для заполнения поля и реквизиты документа. "красненькие" в форме документа в режиме предприятия
38 WhiteDragon93
 
16.05.13
00:36
(37) там есть способ расчета цены, не знаю откуда он берется.
39 Dionis Sergeevich
 
16.05.13
00:36
(38) Тип его посмотри - узнаешь
40 WhiteDragon93
 
16.05.13
00:37
(39) нашел, это перечисление
41 WhiteDragon93
 
16.05.13
00:43
(39)это, по ходу, глупая затея, т.к. если будет происходит то, что написано в (32), то смысл обработки?
42 Dionis Sergeevich
 
16.05.13
00:50
(41) Сначала надо о смысле думать. А потом делать
43 WhiteDragon93
 
16.05.13
00:51
(42) смысл обработки - заполнить установку цен номенклатурой, для того, чтобы не выбирать дважды, скажем 300 позиций
44 WhiteDragon93
 
16.05.13
01:01
(42) да и я - дебил... при выборе номенклатуры, автоматически заполняются все обязательные реквизиты ТЧ. Главное, если возможно, построчно передать ссылки на номенклатуру.
45 hhhh
 
16.05.13
04:18
(44) то, что видишь на форме там - это не ТЧ. Это левая таблица значений, заполняемая на лету.

ТЧ смотри в конфигураторе.
46 ivanov-i-i
 
16.05.13
06:32
(0) В документе есть кнопка Заполнить, далее Заполнить по поступлению. Смотри как сделано для документа Поступление, думаю переделать под Оприходование не составит большого труда.