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

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

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

Оффлайн kaidj

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

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

Смотрите бесплатно более 300 видеоуроков по работе в 1С:Бухгалтерия 8 и 1C:ЗУП 8 ред. 3.0

СМОТРЕТЬ >>


Оффлайн Psm_2015

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

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

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

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

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

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

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1095
  • КПД: 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
  • РЕПУТАЦИЯ: 1095
  • КПД: 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
Просмотров: 3316
Последний ответ 13 Фев 2010, 07:58
от Александр бухгалтер
"Лишние" данные в зарплате

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

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

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

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

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

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

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

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

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

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

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


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

* Реклама

* Поиск

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

* Реклама

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

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

Геннадий ОбьГЭС Геннадий ОбьГЭС
165 Сообщений
alex0402
76 Сообщений
alexandr_ll
38 Сообщений
LexaK
34 Сообщений
MuI_I_Ika MuI_I_Ika
32 Сообщений
crow1983
31 Сообщений
sertak sertak
26 Сообщений
BuhRust
19 Сообщений
Vzonder
17 Сообщений
дфтын дфтын
17 Сообщений

* Кто онлайн

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

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

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

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

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

Поиск

 

Dellos Catering - выездной ресторан кейтеринг по всему Миру
SimplePortal 2.3.5 © 2008-2012, SimplePortal