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

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

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

Оффлайн kaidj

  • *
  • Сообщений: 7
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2015-11-20
  • Сайт: 
  • Профессия: Ученик 1С
Доброго времени суток уважаемые гуру!!! Такая проблема:
Имеется табличная часть "Товары" Формы Документа "Продажа"
Её реквизиты:
- Номенклатура (СправочникСсылка.Номенклатура)
- Упаковка (СправочникСсылка.Упаковка)
- Количество (Число)
- ЦенаУпаковки (Число)
- Цена (Число)
Имеется справочник Упаковка
Имеется справочник Номенклатура с табличной частью "ЦенаЗаУпаковку"
реквизиты ТЧ:
- Упаковка (СправочникСсылка.Упаковка)
- Цена (Число)

Нужно при заполнении "Номенклатура", "Упаковка", "Количество" что бы автоматически заполнялись реквизиты:
- "ЦенаУпаковки" (из Справочник.Упаковка ТЧ ЦенаЗаУпаковку реквизит "Цена")
- "Цена" (умножить автоматически заполненый реквизит "ЦенаУпаковки" на заполненый реквизит "Количество")
в общем я под эту задачу наваял такой "код"
 
 
&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)
      ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
      ТекущаяСтрока.ЦенаУпаковки = НайтиНоменклатуру(ТекущаяСтрока.Номенклатура);
      ТекущаяСтрока.Цена = ТекущаяСтрока.ЦенаУпаковки * ТекущаяСтрока.Количество;
      // Вставить содержимое обработчика.
КонецПроцедуры
Функция НайтиНоменклатуру(Номенклатура)
      ТекущаяСтрока = Элементы.Товары.ТекущиеДанные.Упаковка;
      Запрос = новый Запрос;
      Запрос.Текст = "ВЫБРАТЬ
                     |      Номенклатура.ЦенаЗаУпаковку.(
                     |            Цена
                     |      )
                     |ИЗ
                     |      Справочник.Номенклатура КАК Номенклатура
                     |ГДЕ
                     |    Номенклатура.Ссылка = &Номенклатура
                     |И Номенклатура.ЦенаЗаУпаковку.Ссылка = &ТекущаяСтрока";
        Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
        Результат = Запрос.Выполнить();
        Выборка = Результат.Выбрать();
              Если Выборка.Следующий() Тогда
              Возврат Выборка.Объем;
        КонецЕсли;
        Возврат 0; // или 1
КонецФункции
 
в итоге выдает ошибку:
 
{Документ.Продажа.Форма.ФормаДокумента.Форма(43)}: Ошибка при получении значения атрибута контекста (ТекущиеДанные)      ТекущаяСтрока = Элементы.Товары.ТекущиеДанные.Упаковка;по причине:Текущие данные таблицы недоступны на сервереТекущие данные таблицы недоступны на сервере


Оффлайн Psm_2015

  • **
  • Сообщений: 56
  • РЕПУТАЦИЯ: 3
  • КПД: 5%
  • Регистрация: 2015-06-12
  • Сайт: 
  • Профессия: Ученик 1С
1) перед функцией поставить директиву компиляции &наСервереБезКонтекста.
2) первую строчку из функции убрать, номенклатура в параметрах передается.
3) что за "Объем" в выборке? вроде в запросе такого нет.

4) исправить то что выше и сказать на что ругается дальше =)

Оффлайн дфтын

  • Могу решить ЛЮБУЮ задачу в 1С и не только.. С вопросами в личку:)
  • *****
  • Сообщений: 2720
  • РЕПУТАЦИЯ: 325
  • КПД: 12%
  • 1С наше все
  • Регистрация: 2014-04-29
    • Skype: Soprov1C
  • Компания: Корпорация зонтиков
  • Профессия: Разработчик 1С
о. тока хотел начертать...
Добавлено: 22 Ноя 2015, 21:12

Но самое интересное это передача файлов туда сюда!
Помог? Нажми - Спасибо :)
skype: Soprov1C

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1097
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
ваще жесть!

1. для поиска цены упаковки надо в функцию отправить не только номенклатуру, но и упаковку. а не получать ее (упаковку) внутри функции!
2. WTF???
Запрос.Текст = "ВЫБРАТЬ
                     |      Номенклатура.ЦенаЗаУпаковку.(
                     |            Цена
                     |      )
                     |ИЗ
                     |      Справочник.Номенклатура КАК Номенклатура
                     |ГДЕ
                     |    Номенклатура.Ссылка = &Номенклатура
                     |И Номенклатура.ЦенаЗаУпаковку.Ссылка = &ТекущаяСтрока";
        Запрос.УстановитьПараметр("Номенклатура", Номенклатура);

Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн Sinsinmin

  • ***
  • Сообщений: 116
  • РЕПУТАЦИЯ: 9
  • КПД: 8%
  • Регистрация: 2010-08-11
  • Сайт: 
А что в запросе можно функцию сразу писать?)))

Типа ПолучитьДанные(Док.Код) как Данные

" Номенклатура.ЦенаЗаУпаковку.(
                     |            Цена
                     |      )" Что это?)):lol:

Оффлайн kaidj

  • *
  • Сообщений: 7
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2015-11-20
  • Сайт: 
  • Профессия: Ученик 1С
А что в запросе можно функцию сразу писать?)))

Типа ПолучитьДанные(Док.Код) как Данные

" Номенклатура.ЦенаЗаУпаковку.(
                     |            Цена
                     |      )" Что это?)):lol:

скобки появились в конструкторе запроса (цена - это реквизит табличной части справочника)
Добавлено: 23 Ноя 2015, 10:13

ну в общем как то так:

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

ошибки в этом случае не выдает, но и не заполняет элемент строки "ЦенаУпаковки"
Добавлено: 23 Ноя 2015, 11:04

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

ОШИБКА: {Документ.Продажа.Форма.ФормаДокумента.Форма(59)}: Поле объекта не обнаружено (Цена)
              Возврат Выборка.Цена;

Последний раз редактировалось: kaidj; 23 Ноя 2015, 11:04. Причина: Объединение сообщений

Оффлайн vitasw

  • *****
  • Сообщений: 2546
  • РЕПУТАЦИЯ: 309
  • КПД: 12%
  • Регистрация: 2015-02-10
  • Сайт: 
  • Профессия: Программист 1С
"ВЫБРАТЬ
                     |      Номенклатура.ЦенаЗаУпаковку.Цена КАК Цена

Оффлайн kaidj

  • *
  • Сообщений: 7
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2015-11-20
  • Сайт: 
  • Профессия: Ученик 1С
"ВЫБРАТЬ
                     |      Номенклатура.ЦенаЗаУпаковку.Цена КАК Цена

{Документ.Продажа.Форма.ФормаДокумента.Форма(15)}: Ошибка при вызове метода контекста (НайтиНоменклатуру)
  ТекущаяСтрока.ЦенаУпаковки = НайтиНоменклатуру(ТекущаяСтрока.Номенклатура,Упаковка);
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'ret':
   форма: Элемент
   имя: {http://v8.1c.ru/8.2/managed-application/modules}ret
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа 'РезультатЗапроса'

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1097
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
ЛЮДИ!!! Опомнитесь!!! :xfbnsdfb:

kaidj, думайте, о том ЧТО вы делаете и ДЛЯ ЧЕГО!!!
програмировать - это не просто наваял запрос и гуляй Вася!

вот же...
&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)
      СтрокаТЧ = Элементы.Товары.ТекущиеДанные;
      СтрокаТЧ.ЦенаУпаковки = ПолучитьЦенуУпаковки(СтрокаТЧ.Номенклатура, СтрокаТЧ.Упаковка); //научитесь сразу давать методам логичные названия!
      СтрокаТЧ.Цена = СтрокаТЧ.ЦенаУпаковки * СтрокаТЧ.Количество;
КонецПроцедуры

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

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

Если ВыборкаДетальныеЗаписи.Следующий() Тогда
Возврат ВыборкаДетальныеЗаписи.Цена;
Иначе
Возврат 0;
КонецЕсли;
КонецФункции

как-то так. не проверял.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн vitasw

  • *****
  • Сообщений: 2546
  • РЕПУТАЦИЯ: 309
  • КПД: 12%
  • Регистрация: 2015-02-10
  • Сайт: 
  • Профессия: Программист 1С
Очень замечательно, что вы научились копипастить ошибки. А попробовать самому подумать/разобраться?
Результатом выполнения этого запроса = вложенный запрос, что естественно вызывает ошибку? Какую из ста тыщ пятьсот строк в таблице цен номенклатуры вы хотите получить?


Теги:
 

Как перенести данные из 7.7 типовая УСН 1.3 в 1С 8 типовая бухгалтерия

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

Ответов: 0
Просмотров: 4651
Последний ответ 13 Фев 2010, 07:58
от Александр бухгалтер
"Лишние" данные в зарплате

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

Ответов: 3
Просмотров: 3492
Последний ответ 05 Апр 2014, 11:11
от Славянка
"Данные по коду не найдены"

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

Ответов: 6
Просмотров: 7139
Последний ответ 03 Дек 2015, 13:58
от Timofey Gurubanov
Куда сохраняются данные в режиме работы клиент при выгрузке данных обработкой "Универсальный обмен данными в формате XML"

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

Ответов: 3
Просмотров: 6360
Последний ответ 13 Ноя 2014, 08:23
от cska-fanat-kz
Как при помощи СКД при формировании макета отчета данные связанного набора данных вывести в Параметр через ";"

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

Ответов: 0
Просмотров: 823
Последний ответ 01 Мар 2016, 14:33
от sveta C

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

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

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


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

* Реклама

* Поиск

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

* Реклама

* Последние вакансии

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

alex0402
92 Сообщений
oleg-x
81 Сообщений
Геннадий ОбьГЭС Геннадий ОбьГЭС
68 Сообщений
Golickoff Golickoff
51 Сообщений
AIFrame
46 Сообщений
ilyay ilyay
42 Сообщений
Амал
30 Сообщений
lansy
22 Сообщений
Dethmontt Dethmontt
22 Сообщений
BuhRust
21 Сообщений

* Кто онлайн

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

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

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

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

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal