Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Ссылка в массив          
Gotsalo93 Подменю пользователя
сообщение 04.08.14, 14:17
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 13
Спасибо сказали: 0 раз
Рейтинг: 0

Мне нужно в массив элемента добавить нужную ссылку на ТМЦ в ТабличнуюЧасть РасходнойНакладной.

Запрос = Новый Запрос;            
Запрос.Текст =      
"ВЫБРАТЬ
|    ТМЦОстатки.ТМЦ,
|    ТМЦОстатки.Склад,
|    ЕСТЬNULL(ТМЦОстатки.СуммаОстаток, 0) / ЕСТЬNULL(ТМЦОстатки.КоличествоОстаток, 1) КАК УчетнаяЦена,
|    РасходнаяНакладнаяПереченьТМЦ.ТМЦ КАК ТМЦ1
|ИЗ
|    РегистрНакопления.ТМЦ.Остатки(
|            &Дата,
|            ТМЦ В (&МассивТМЦ)
|                И Склад = &Склад) КАК ТМЦОстатки,
|    Документ.РасходнаяНакладная.ПереченьТМЦ КАК РасходнаяНакладнаяПереченьТМЦ";
МассивТМЦ = Новый Массив;
МассивТМЦ.Добавить(?);
Запрос.УстановитьПараметр("МассивТМЦ", МассивТМЦ);
Запрос.УстановитьПараметр("Склад", Склад);
Запрос.УстановитьПараметр("Дата", Дата);


Я может понимаю, что это смешно, но я начал учить 1с, и инфа везде отрывочно, я как то не могу найти как это правильно записать)
Прбывал
МассивТМЦ.Добавить(Документы.РасходнаяНакладная.ПереченьТМЦ.ТМЦ);


Пишет что Перечень ТМЦ поле не найдено.

Как правильно вписать ссылку в массив?

logist Подменю пользователя
сообщение 04.08.14, 14:35
Сообщение #2

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

МассивТМЦ.Добавить(ПереченьТМЦ.ВыгрузитьКолонку("ТМЦ"));


и из запроса уберите все что касается Документа. это если процедура выполняется в самом документе.

Сообщение отредактировал logist - 04.08.14, 14:34


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Спасибо сказали: Gotsalo93,

Petre Подменю пользователя
сообщение 04.08.14, 14:41
Сообщение #3

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2907
Из: Київ, Україна
Спасибо сказали: 1148 раз
Рейтинг: 1230.2

Нифига не понятно.
Добавить ссылку в массив:
МассивТМЦ.Добавить(Ссылка);

Получить ссылку:
Ссылка = СтрокаТЧ.ТМЦ;

Получить, например, первую строку:
СтрокаТЧ = НашДокумент.ПереченьТМЦ[0];


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

Gotsalo93 Подменю пользователя
сообщение 04.08.14, 15:14
Сообщение #4

Общительный
**
Группа: Пользователи
Сообщений: 13
Спасибо сказали: 0 раз
Рейтинг: 0

Спасибо. А как теперь записать результаты запроса в колонку УчетнаяЦена?

logist Подменю пользователя
сообщение 04.08.14, 16:38
Сообщение #5

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(Gotsalo93 @ 04.08.14, 15:14) *
в колонку УчетнаяЦена?

Сейчас я стелепатирую где находится эта колонка, и конфигурацию в целом...


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Спасибо сказали: Gotsalo93,

Gotsalo93 Подменю пользователя
сообщение 04.08.14, 16:47
Сообщение #6

Общительный
**
Группа: Пользователи
Сообщений: 13
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(logist @ 04.08.14, 17:38) *
Сейчас я стелепатирую где находится эта колонка, и конфигурацию в целом...



=) Вот конфигурация в Целом:
[необходимо зарегистрироваться для просмотра ссылки]

Колонка находиться в Документы.РасходнаяНакладная.ПеречньТМЦ.УчетнаяЦена;

logist Подменю пользователя
сообщение 04.08.14, 18:01
Сообщение #7

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Конфигурацию не смотрел, у вас тогда подход не правильный. Я бы загрузил всю таблицу в запрос, сделал рассчет, а потом выгрузил обратно в документ, это быстрее и меньше кода писать.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Gotsalo93 Подменю пользователя
сообщение 04.08.14, 18:28
Сообщение #8

Общительный
**
Группа: Пользователи
Сообщений: 13
Спасибо сказали: 0 раз
Рейтинг: 0

Вот так?
Запрос = Новый Запрос;            
Запрос.Текст =      
"ВЫБРАТЬ
|    РасходнаяНакладнаяПереченьТМЦ.ТМЦ,
|    РасходнаяНакладнаяПереченьТМЦ.Цена,
|    РасходнаяНакладнаяПереченьТМЦ.Количество,
|    РасходнаяНакладнаяПереченьТМЦ.Сумма
|ПОМЕСТИТЬ ТЧ
|ИЗ
|    Документ.РасходнаяНакладная.ПереченьТМЦ КАК РасходнаяНакладнаяПереченьТМЦ
|ГДЕ
|    РасходнаяНакладнаяПереченьТМЦ.Ссылка = &Ссылка
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|    ТМЦОстатки.ТМЦ,
|    ЕСТЬNULL(ТМЦОстатки.СуммаОстаток, 0) / ТМЦОстатки.КоличествоОстаток КАК УчетнаяЦена,
|    ТМЦОстатки.Склад
|ПОМЕСТИТЬ Остатки
|ИЗ
|    РегистрНакопления.ТМЦ.Остатки(
|            &Период,
|            ТМЦ В
|                (ВЫБРАТЬ
|                    ТЧ.ТМЦ
|                ИЗ
|                    ТЧ КАК ТЧ)) КАК ТМЦОстатки
|ГДЕ
|    ТМЦОстатки.Склад.Ссылка = &Склад
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|    ТЧ.ТМЦ,
|    ТЧ.Цена,
|    ТЧ.Количество,
|    ТЧ.Сумма,
|    Остатки.УчетнаяЦена,
|    Остатки.УчетнаяЦена * ТЧ.Количество КАК УчетнаяСумма
|ИЗ
|    ТЧ КАК ТЧ
|        ЛЕВОЕ СОЕДИНЕНИЕ Остатки КАК Остатки
|        ПО ТЧ.ТМЦ = Остатки.ТМЦ";            
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.УстановитьПараметр("Склад", Склад);
Запрос.УстановитьПараметр("Период", Дата);        

РезультатЗапроса = Запрос.Выполнить();

Если Не РезультатЗапроса.Пустой() Тогда            
      ПереченьТМЦ.Загрузить(РезультатЗапроса.Выгрузить());      
Иначе            
      Сообщить("Не найдены данные для расчета учетной цены");      
КонецЕсли;


Ну это я уже делал, парень у которого я взял задания, сказал что лучше тем способом, который я привел выше...

logist Подменю пользователя
сообщение 04.08.14, 18:41
Сообщение #9

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(Gotsalo93 @ 04.08.14, 18:28) *
парень у которого я взял задания, сказал что лучше тем способом

Ну раз парень сказал, то конечно...

Цитата(Gotsalo93 @ 04.08.14, 18:28) *
Вот так?

Почти. Не надо громоздить три пакета, можно все выполнить одним.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Gotsalo93 Подменю пользователя
сообщение 04.08.14, 18:49
Сообщение #10

Общительный
**
Группа: Пользователи
Сообщений: 13
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(logist @ 04.08.14, 19:41) *
Ну раз парень сказал, то конечно...


Ну как бы я пока учусь и готов выслушать все советы)

Цитата(logist @ 04.08.14, 19:41) *
Почти. Не надо громоздить три пакета, можно все выполнить одним.


То есть добавить в запрос колонки по ТЧ и потом их просто выгрузить?

logist Подменю пользователя
сообщение 04.08.14, 18:59
Сообщение #11

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Как-то так:
Запрос = Новый Запрос("ВЫБРАТЬ
                      |    ПереченьТМЦ.Номенклатура,
                      |    ПереченьТМЦ.Количество,
                      |    ПереченьТМЦ.Сумма,
                      |    ПереченьТМЦ.Цена,
                      |    ВЫБОР
                      |        КОГДА ЕСТЬNULL(ПартииТоваровНаСкладахОстатки.СтоимостьОстаток, 0) = 0
                      |                ИЛИ ЕСТЬNULL(ПартииТоваровНаСкладахОстатки.КоличествоОстаток, 0) = 0
                      |            ТОГДА 0
                      |        ИНАЧЕ ПартииТоваровНаСкладахОстатки.СтоимостьОстаток / ПартииТоваровНаСкладахОстатки.КоличествоОстаток
                      |    КОНЕЦ КАК УчетнаяЦена
                      |ИЗ
                      |    Документ.РеализацияТоваровУслуг.Товары КАК ПереченьТМЦ
                      |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.Остатки(&Дата, Склад = &Склад) КАК ПартииТоваровНаСкладахОстатки
                      |        ПО ПереченьТМЦ.Номенклатура = ПартииТоваровНаСкладахОстатки.Номенклатура
                      |ГДЕ
                      |    ПереченьТМЦ.Ссылка = &Ссылка");
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.УстановитьПараметр("Дата", Дата);
Запрос.УстановитьПараметр("Склад", Склад);
ТекущийДокумент.ПереченьТМЦ.Загрузить(Запрос.Выполнить().Выгрузить();


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Спасибо сказали: Gotsalo93,

Gotsalo93 Подменю пользователя
сообщение 04.08.14, 20:39
Сообщение #12

Общительный
**
Группа: Пользователи
Сообщений: 13
Спасибо сказали: 0 раз
Рейтинг: 0

Запрос = Новый Запрос;            
Запрос.Текст =      
"ВЫБРАТЬ
|    РасходнаяНакладнаяПереченьТМЦ.ТМЦ,
|    РасходнаяНакладнаяПереченьТМЦ.Количество,
|    РасходнаяНакладнаяПереченьТМЦ.Сумма,
|    РасходнаяНакладнаяПереченьТМЦ.Цена,
|    ЕСТЬNULL(ТМЦОстатки.СуммаОстаток, 0) / ЕСТЬNULL(ТМЦОстатки.КоличествоОстаток, 1) КАК УчетнаяЦена,
|    ЕСТЬNULL(ТМЦОстатки.СуммаОстаток, 0) / ЕСТЬNULL(ТМЦОстатки.КоличествоОстаток, 1) * РасходнаяНакладнаяПереченьТМЦ.Количество КАК УчетнаяСумма
|ИЗ
|    Документ.РасходнаяНакладная.ПереченьТМЦ КАК РасходнаяНакладнаяПереченьТМЦ
|    ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТМЦ.Остатки(&Дата, Склад = &Склад) КАК ТМЦОстатки
|    ПО РасходнаяНакладнаПереченьТМЦ.ТМЦ =  ТМЦОстатки.ТМЦ
|ГДЕ
|    РасходнаяНакладнаяПереченьТМЦ.Ссылка = &Ссылка";
    
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.УстановитьПараметр("Склад", Ссылка);
Запрос.УстановитьПараметр("Дата", Дата);        
Документы.РасходнаяНакладная.ПереченьТМЦ.Загрузить(Запрос.Выполнить().Выгрузить());


Ошибка:

Ошибка при выполнении обработчика - 'ПередЗаписью'
по причине:
{Документ.РасходнаяНакладная.МодульОбъекта(23)}: Поле объекта не обнаружено (ПереченьТМЦ)
Документы.РасходнаяНакладная.ПереченьТМЦ.Загрузить(Запрос.Выполнить().Выгрузить());


Petre Подменю пользователя
сообщение 05.08.14, 8:06
Сообщение #13

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2907
Из: Київ, Україна
Спасибо сказали: 1148 раз
Рейтинг: 1230.2

Просто
ПереченьТМЦ.Загрузить(Запрос.Выполнить().Выгрузить());


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

Gotsalo93 Подменю пользователя
сообщение 05.08.14, 9:03
Сообщение #14

Общительный
**
Группа: Пользователи
Сообщений: 13
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(Petre @ 05.08.14, 9:06) *
Просто
ПереченьТМЦ.Загрузить(Запрос.Выполнить().Выгрузить());

Да я так делал, ничего не выгружало, через отладчик посмотрел, было написано "Поле объекта не обнаружено "Загрузить" biggrin.gif

Как бы с изначальной задачей я справился уже, которую делал через свой первый запрос. Хотел бы выяснить почему оно не выгружало и искало поле объекта "Загрузить"?)

alex040269 Подменю пользователя
сообщение 05.08.14, 9:18
Сообщение #15

Крутой
Иконка группы
Группа: Местный
Сообщений: 1626
Из: Гуляйполе
Спасибо сказали: 236 раз
Рейтинг: 0

ПереченьТМЦ - это табличная часть?


Signature
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
ЗиУП

Gotsalo93 Подменю пользователя
сообщение 05.08.14, 9:22
Сообщение #16

Общительный
**
Группа: Пользователи
Сообщений: 13
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(alex040269 @ 05.08.14, 10:18) *
ПереченьТМЦ - это табличная часть?


Да, табличная часть Документа РасходнаяНакладная. Других нету.

Petre Подменю пользователя
сообщение 05.08.14, 9:51
Сообщение #17

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2907
Из: Київ, Україна
Спасибо сказали: 1148 раз
Рейтинг: 1230.2

Чудес не бывает.


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

Gotsalo93 Подменю пользователя
сообщение 05.08.14, 10:10
Сообщение #18

Общительный
**
Группа: Пользователи
Сообщений: 13
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(Petre @ 05.08.14, 10:51) *
Чудес не бывает.



Вот текст запроса:
Запрос = Новый Запрос;            
Запрос.Текст =      
"ВЫБРАТЬ
|    ПереченьТМЦ.ТМЦ,
|    ПереченьТМЦ.Количество,
|    ПереченьТМЦ.Сумма,
|    ПереченьТМЦ.Цена,
|    ЕСТЬNULL(ТМЦОстатки.СуммаОстаток, 0) / ЕСТЬNULL(ТМЦОстатки.КоличествоОстаток, 1) КАК УчетнаяЦена,
|    ПереченьТМЦ.УчетнаяЦена * ПереченьТМЦ.Количество КАК УчетнаяСумма
|ИЗ
|    Документ.РасходнаяНакладная.ПереченьТМЦ КАК ПереченьТМЦ
|        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТМЦ.Остатки(&Дата, Склад = &Склад) КАК ТМЦОстатки
|        ПО ПереченьТМЦ.ТМЦ = ТМЦОстатки.ТМЦ
|ГДЕ
|    ПереченьТМЦ.Ссылка = &Ссылка";
    
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.УстановитьПараметр("Склад", Склад);
Запрос.УстановитьПараметр("Дата", Дата);

РезультатЗапроса = Запрос.Выполнить();
ПереченьТМЦ.Загрузить(РезультатЗапроса.Выгрузить());




Вот снимок с отладчика:
 ! 

Читаем в правилах как вставлять картинки.
 


Сообщение отредактировал Vofka - 05.08.14, 11:01

alex040269 Подменю пользователя
сообщение 05.08.14, 12:19
Сообщение #19

Крутой
Иконка группы
Группа: Местный
Сообщений: 1626
Из: Гуляйполе
Спасибо сказали: 236 раз
Рейтинг: 0

В отладчике скобки добавте. И это процедура.
Ответ будет: вызов процедуры как функции.


Signature
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
ЗиУП

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 13.06.24, 4:12
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!