Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
17 Окт 2017, 07:08
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Автоматическое заполнение табличной части документа  (Прочитано 13290 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Gregory78

  • *
  • Сообщений: 23
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-08-14
  • Сайт: 
  • Профессия: Ученик 1С
Всем привет! Подскажите: как программным способом заполнить табличную часть документа данными из справочника "Сотрудники"?

Я сделал так: создал в модуле формы документа серверную функцию, которая получает запросом список сотрудников из справочника, и результат помещает в массив. Проверил: работает, нужные данные в массиве появляются.

Затем повесил на форму событие "При открытии". Перебираю массив циклом, и... дальше не хватает знаний.
Каким образом мне обратиться к ТЧ "СписокСотрудников"? Как к "Элементы.СписокСотрудников" или как "Объект.СписокСотрудников" (в последнем случае процедуру заменить на серверную)? Пытался через синтакс-помощник найти подходящие методы, но пока безрезультатно.

Была еще идея вставить вместо ТЧ динамический список - это получается легко... но мне нужны рядом с фамилией каждого сотрудника еще и реквизит типа "булево", редактируемый пользователем. Вот с этим тоже все сложно. (

В общем, цель такая: при открытии формы документа табличная часть должна автоматически заполниться списком сотрудников (циклом - создается строка, в реквизит "ФИО" вставляются данные из массива, данные записываются), чтобы пользователю осталось только выставить галочки на булевых реквизитах.
Работаю в 1С 8.2.


Оффлайн freez1301

  • ***
  • Сообщений: 130
  • РЕПУТАЦИЯ: 8
  • КПД: 6%
  • Регистрация: 2014-04-25
  • Сайт: 
  • Профессия: Ученик 1С
после выполнения запроса у вас будет ТаблицаЗначений. Далее необходимо получить документ (или создать), который будете заполнять. и
Для каждого стр из ТЗ Цикл
НоваяСтрока = Документ.ТЧ.Добавить();
НоваяСтрока.ФИО = стр.ФИО;
и т.д.

Оффлайн TreeDogNight

  • ***
  • Сообщений: 202
  • РЕПУТАЦИЯ: 28
  • КПД: 14%
  • Регистрация: 2013-10-16
    • Skype: treedognight3
  • Сайт: www.avars.uz
  • Профессия: Программист 1С
&НаКлиенте
Процедура ПриОткрытии(Отказ)

ЗаполнитьТабличнуюЧасть();

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

&НаСервере
Процедура ЗаполнитьТабличнуюЧасть()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Сотрудники.Наименование
|ИЗ
| Справочник.Сотрудники КАК Сотрудники";

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

Для каждого Стр из РезультатЗапроса Цикл
НоваяСтрока = Объект.ТабличнаячЧасть.Добавить();
НоваяСтрока.ФИО = Стр.Наименование;
КонецЦикла
КонецПроцедуры
Cегодня не все могут провести завтрашним числом. Вернее, не только лишь все - мало кто может это сделать.

Оффлайн Gregory78

  • *
  • Сообщений: 23
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-08-14
  • Сайт: 
  • Профессия: Ученик 1С
Спасибо за подробный ответ! Но почему-то не все тут срабатывает. Создаются строки (их количество соответствует числу сотрудников), но поля остаются пустыми. Проверил с точкой останова, вроде все должно быть правильно. Жму Shift+F9 (вычислить выражение), получаю:
Стр.Наименование - видна фамилия сотрудника, тип - строка;
НоваяСтрока - ДанныеФормыЭлементКоллекции;
НоваяСтрока.Сотрудник - СправочникСсылка.Сотрудники

Но хоть убей, не видны эти сотрудники в форме!
Ковырялся еще сам, поместил весь код в одну процедуру "При создании на сервере". Попробовал использовать метод "Выбрать" вместо "Выгрузить", изменил обход результата запроса:

        Результат =  Запрос.Выполнить().Выбрать();
   Пока Результат.Следующий() Цикл
   НоваяСтрока = Объект.СписокСотрудников.Добавить();
   НоваяСтрока.Сотрудник = Результат.Наименование;

Но в итоге суть та же, все это как мертвому припарка. Последняя строка "НоваяСтрока.Сотрудник = Результат.Наименование;" не срабатывает. У кого-нибудь есть еще соображения?

Оффлайн GRADUS

  • *****
  • Сообщений: 699
  • РЕПУТАЦИЯ: 51
  • КПД: 7%
  • Регистрация: 2013-06-08
  • Сайт: 
  • Профессия: Программист 1С
Спасибо за подробный ответ! Но почему-то не все тут срабатывает. Создаются строки (их количество соответствует числу сотрудников), но поля остаются пустыми. Проверил с точкой останова, вроде все должно быть правильно. Жму Shift+F9 (вычислить выражение), получаю:
Стр.Наименование - видна фамилия сотрудника, тип - строка;
НоваяСтрока - ДанныеФормыЭлементКоллекции;
НоваяСтрока.Сотрудник - СправочникСсылка.Сотрудники

Но хоть убей, не видны эти сотрудники в форме!
Ковырялся еще сам, поместил весь код в одну процедуру "При создании на сервере". Попробовал использовать метод "Выбрать" вместо "Выгрузить", изменил обход результата запроса:

        Результат =  Запрос.Выполнить().Выбрать();
   Пока Результат.Следующий() Цикл
   НоваяСтрока = Объект.СписокСотрудников.Добавить();
   НоваяСтрока.Сотрудник = Результат.Наименование;

Но в итоге суть та же, все это как мертвому припарка. Последняя строка "НоваяСтрока.Сотрудник = Результат.Наименование;" не срабатывает. У кого-нибудь есть еще соображения?

Что будет, если ты попытаешься записать строку "абв" в переменную числового типа?
Вот и подумай, почему у тебя строка не записывается в переменную ссылочного типа.

Оффлайн Gregory78

  • *
  • Сообщений: 23
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-08-14
  • Сайт: 
  • Профессия: Ученик 1С
Каким образом тогда получить ссылочные значения? Получить строку и каким-то образом выполнить поиск по справочнику, а полученный результат поместить в переменную?

Оффлайн roman_se.kz

  • *
  • Сообщений: 28
  • РЕПУТАЦИЯ: 3
  • КПД: 11%
  • Регистрация: 2014-08-19
  • Сайт: 
  • Профессия: Программист 1С
А в Табличной Части это поле, куда вы записываете это ссылка на справочник Сотрудники? Или строковое?

Оффлайн has

  • Модератор
  • *****
  • Сообщений: 1308
  • РЕПУТАЦИЯ: 285
  • КПД: 22%
  • Регистрация: 2011-01-28
  • Сайт: 
  • Профессия: Программист 1С
Каким образом тогда получить ссылочные значения? Получить строку и каким-то образом выполнить поиск по справочнику, а полученный результат поместить в переменную?

Текст запроса то какой? Поди в запросе вместо ссылки наименование получаете

Оффлайн Gregory78

  • *
  • Сообщений: 23
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-08-14
  • Сайт: 
  • Профессия: Ученик 1С
НоваяСтрока.Сотрудник -
СправочникСсылка.Сотрудники
Стало быть, не строка, а ссылка.
Добавлено: 20 Авг 2014, 07:47


[/quote]
Текст запроса то какой? Поди в запросе вместо ссылки наименование получаете
[/quote]

Да, запросом получаю наименование . Так! Может быть, вместо наименования выбрать ссылку?

ВЫБРАТЬ
Сотрудники.Ссылка
ИЗ
Справочник.Сотрудники КАК Сотрудники
???
Надо будет попробовать.

Оффлайн has

  • Модератор
  • *****
  • Сообщений: 1308
  • РЕПУТАЦИЯ: 285
  • КПД: 22%
  • Регистрация: 2011-01-28
  • Сайт: 
  • Профессия: Программист 1С
Да, запросом получаю наименование . Так! Может быть, вместо наименования выбрать ссылку?
Если в табличной части ссылка, то и в запросе ссылку выбирать надо



Теги:
 

Не открывает форму сохраненного документа, открывает форму нового.

Автор EHOTРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 4374
Последний ответ 13 Апр 2012, 23:26
от Vit1501
Добавление сведений в графу "основание" документа "ТОРГ-12"

Автор Ярослав1984Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 4
Просмотров: 7555
Последний ответ 20 Авг 2013, 18:45
от Ярослав1984
"Не совпадают сумма документа и общая сумма по платежным ведомостям"

Автор yunovoРаздел Пользователям "1С - Предприятие 8"

Ответов: 1
Просмотров: 4581
Последний ответ 11 Янв 2015, 02:55
от MuI_I_Ika
При создании нового документа "Заявка на кассовый расход" Ошибка "Значение 9 поля "номер" не уникально

Автор ppkmliteРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 14
Просмотров: 7935
Последний ответ 22 Ноя 2014, 04:50
от cska-fanat-kz
Фамилия руководителя в печатных формах документа "Акт сверки", "Акт об оказании"

Автор MKozzlikРаздел Пользователям "1С - Предприятие 8"

Ответов: 1
Просмотров: 7157
Последний ответ 03 Фев 2012, 17:27
от Dinah

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Топ 10 авторов за месяц

oleg-x
86 Сообщений
Геннадий ОбьГЭС Геннадий ОбьГЭС
54 Сообщений
alex0402
51 Сообщений
AIFrame
40 Сообщений
Oldman06
31 Сообщений
vitasw
27 Сообщений
Golickoff Golickoff
26 Сообщений
MuI_I_Ika MuI_I_Ika
16 Сообщений
AsadRoman
13 Сообщений
BuhRust
13 Сообщений

* Кто онлайн

  • Точка Гостей: 363
  • Точка Скрытых: 0
  • Точка Пользователей: 5
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal