Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 10:18

Как реализовать функцию для переноса данных из документа "заполнение расписания" в регистр сведений при нажатии на кнопку "просмотр пары"

Автор Panacea531, 04 мар 2023, 17:38

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

Panacea531

Ребят приветствую всех! Можете пожалуйста подсказать как реализовать данную функцию , имеется документ "заполнения расписания", в табличной части выставляется "группа и дисциплина" так вот можно ли при нажатии на строку и нажатии кнопки "просмотр пары"(срин 1) сделать так чтобы при нажатии на кнопку у меня открывался регистр сведений где данные которые были в доке перенеслись в строки регистра я там еще что-нибудь мог дописать ?(скрин 2)

Максим75

Panacea531, ну чтобы создать набор записей регистра сведений по нажатию кнопки - то не проблема.
вопрос в том, как однозначно классифицировать уже существующую запись (по документу это ясно), но нужно еще по чему-то (например по паре), чтобы при создании новой записи проверить, вдруг уже есть запись по этому документу и этой паре, затереть то что есть (пару же могут поменять или что-то еще изменить).
ну а для поиска и создания смотреть набор записей регистра сведений, там отборы можно накладывать и искать.

Panacea531

Максим75, спасибо что помогаете . Извините не подскажите ли еще правильно ли пишу код :

&НаКлиенте   
Процедура ПросмотрПары(Команда)     
   
// Получаем текущую строку табличной части
    ТекущаяСтрока = ЭтаФорма.ТабличноеПоле1.ТекущаяСтрока;
   
    // Получаем данные из текущей строки
    Дата = ЭтаФорма.Объект.День;
    Группа = ЭтаФорма.Объект.Группа;
    Пара = ТекущаяСтрока.Пара;
    Дисциплина = ТекущаяСтрока.Дисциплина;
   
    // Открываем форму регистра сведений "расписание"
    ФормаРасписания = Новый форма("РегистрСведений.Расписание.Форма");
    ФормаРасписания.Открыть();
   
    // Создаем новую запись в регистре сведений и заполняем ее данными
    НоваяЗапись = РегистрыСведений.Расписание.СоздатьМенеджерЗаписи().Новый();
    НоваяЗапись.Измерение1 = Группа;
    НоваяЗапись.Измерение2 = Пара;
    НоваяЗапись.Измерение3 = Дисциплина;
    НоваяЗапись.ДатаЗанятия = Дата;
    НоваяЗапись.Записать();
   
   ФормаРасписания.ЭлементыФормы.Таблица.ТекущиеДанные = РегистрыСведений.Расписание.Прочитать().Выбрать();
   
   
   
   
КонецПроцедуры

и выдает такую ошибку :
{Документ.ЗаполнениеРасписания.Форма.ФормаДокумента.Форма(18,29)}: Конструктор не найден
    ФормаРасписания = Новый <<?>>форма("РегистрСведений.Расписание.Форма"); (Проверка: Тонкий клиент)


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

Максим75

Panacea531, ФормаРасписания = Новый форма("РегистрСведений.Расписание.Форма"); - такого нет

вроде как ФормаРасписания = ПолучитьФорму("РегистрСведений.Расписание.Форма")
ФормаРасписания.Открыть();

Panacea531

Максим75, Максим здравствуйте! Спасибо еще раз вчера здорово помогли , извините пожалуйста моежете еще последние подсказать что не правильно делаю, буду вам очень благодарен   вот код :
&НаКлиенте   
Процедура ПросмотрПары(Команда)     
   
   
// Получаем текущую строку табличной части
ТекущаяСтрока = Элементы.Уроки.ТекущиеДанные;
Если ТекущаяСтрока=Неопределено Тогда
   Возврат;
   КонецЕсли;
    // Получаем данные из текущей строки
    Дата = ЭтаФорма.Объект.День;
    Группа = ЭтаФорма.Объект.Группа;
   Пара = ТекущаяСтрока.Пара;
    Дисциплина = ТекущаяСтрока.Дисциплина;   
   

    // Создаем запрос на выборку данных из регистра сведений "расписание"
   Запрос = Новый Запрос;
   Запрос.Текст =
              "ВЫБРАТЬ
    |   Расписание.Группа КАК Группа,
    |   Расписание.Пара КАК Пара,
    |   Расписание.Дисциплина КАК Дисциплина,
    |   Расписание.ДатаЗанятия КАК ДатаЗанятия
    |ИЗ
    |   РегистрСведений.Расписание КАК Расписание
    |ГДЕ
    |   Расписание.Группа = &Группа
    |   И Расписание.Пара = &Пара
    |   И Расписание.Дисциплина = &Дисциплина
    |   И Расписание.ДатаЗанятия = &ДатаЗанятия";
    Запрос.УстановитьПараметр("Группа", Группа);
   Запрос.УстановитьПараметр("Пара", Пара);
   Запрос.УстановитьПараметр("Дисциплина", Дисциплина);
   Запрос.УстановитьПараметр("ДатаЗанятия", ДатаЗанятия);
   
   
   // Открываем результаты выборки в новом окне или форме
   Результат = Запрос.Выполнить();
   Если Не Результат.Пустой() Тогда
      //Открытие результата
РезультатВыборки = Результат.Выбрать();
Если РезультатВыборки.Следующий() Тогда
// Переносим данные в регистр сведений
РегистрСведений.Измерения.Группа = ЭтаФорма.Объект.Группа;
РегистрСведений.Измерения.Пара = ТекущаяСтрока.Пара;
РегистрСведений.Измерения.Дисциплина = ТекущаяСтрока.Дисциплина;
РегистрСведений.Измерения.ДатаЗанятия = ЭтаФорма.Объект.День;
РегистрСведений.Записать();
    
   // Создаем объект регистра сведений "расписание"
   ФормаРасписание = ПолучитьФорму("РегистрСведений.Расписание.ФормаЗаписи");
ФормаРасписание.Открыть();   
   КонецЕсли;
КонецЕсли;
   
КонецПроцедуры

Вот такая ошибка :
{Документ.ЗаполнениеРасписания.Форма.ФормаДокумента.Форма(20,17)}: Тип не определен (Запрос)
   Запрос = Новый <<?>>Запрос; (Проверка: Тонкий клиент)


Максим75

Panacea531, запрос на клиенте только под толстым работает, а Вы скорее всего под тонким пробуете.
так то надо на сервере делать, но можно под толстым все отладить, а уже потом переделывать на серверные вызовы.

Максим75

Panacea531, можно кстати не запросом это делать, а отбором в наборе записей регистра сведений.
да и в регистр сведений Расписание не мешало бы реквизит типа документа засунуть, потому как Вы отбираете по группе, паре, дисциплине и дате занятий, а чисто гипотетически такое может быть с разных документов залетать, или не может? Это уже Вам виднее, как доки заполняются.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск